IzPack

izpack是基於Apache Software License 2.0許可的開源項目;izpack是純Java,對部分特性有針對不同平台版本的Library。例如:快捷鍵的創建。izpack是一個用於解決安裝程式製作的Builder工具;通過izpack製作的安裝程式可以運行於不同的作業系統,Windows, Linux, Unix等,只要安裝了JDK1.4以及其後版本即可;izpack優秀的模組化設計可以允許你定製安裝程式外觀、安裝過程等;同時允許你通過其提供API調整izpack安裝過程。

主要功能

·XML based installation files
·easy internationalization using XML files (10 translations are already available)
·Ant integration, command-line compiler
·easy customization with the panels and a rich API (even an XML parser is included !)
·powerful variable substitution system that you can use to customize scripts and more generally any text-based file
·different kinds of installers (standard, web-based, ...)
· launching of external executables during the installation process and Unix executable flag support (useful for the scripts for instance)
·layout of the installation files in packs (some can be optional)
·native code integration facilities
·jar files nesting support
·... more things to discover and create !.

使用指南

利用izpack製作安裝程式的主要有兩步:
第一步:創建並描述安裝定義檔案
第二步:通過izpack提供CommandLine工具或Ant Task對安裝定義檔案進行編譯,編譯的結果即是生成一個可執行的jar檔案,其中包括了整個安裝過程的實現以及安裝數據;
安裝定義檔案:
安裝過程定義檔案是一個XML檔案,installation是根元素,表示定義的開始。定義主要由如下幾部分組成:
1.<info>….</info>
用於定義安裝程式的基本信息;
<info>
<appname>產品中文名稱</appname>
<appversion>產品版本號,例如:1.0-062312</appversion>
<url>公司網址</url>
<javaversion>JDK版本號:1.</javaversion>
</info>
2.<guiprefs>……</guipref>
用於定義安裝程式界面信息,例如:
<!--**安裝界面配置信息**-->
<guiprefs resizable="no" height="480" width="600">
<modifier key="langDisplayType" value="native" />
</guiprefs>
3.<variables>……..</variables>
定義變數或配置信息,變數在整個安裝製作的過程中非常重要,變數兩種用途:其一:作為配置用,例如可以通過按照一定的命名稱規則為某個變數設定一個值,izpack在執行安裝過程中將會讀取某個變數的值來決定某個安裝精靈視窗是否可見等;例如:我們可以通過定義compareToVariable.<index>、compareToOperator.<index>與compareToValue.<index>的組合決定第<index>個用戶自定義的嚮導視窗在安裝時是否可見,這樣就可以通過上個視窗用戶選擇來決定下個視窗是否可見;其二:作為替換變數用,通常安裝過程中收集的信息存放在變數中,然後,在安裝程式進行到最後,利用變數的值來替換安裝目標檔案中的內容。
<variables>
<!--**顯示快捷鍵創建視窗標識**-->
<variable name="DesktopShortcutCheckboxEnabled" value="true" />
<!--**設定部分變數的預設值**-->
<variable name="SERVER_TYPE" value="tomcat" />
<variable name="SERVER_PATH" value="" />
<!--**TOMCAT PORT輸入視窗(index=1)判定**-->
<variable name="compareToVariable.1" value="INSTALL_TYPE" />
<variable name="compareToOperator.1" value="=" />
<variable name="compareToValue.1" value="new" />
</variable>
4.<locale>….</locale>
決定,安裝程式界面所支持的語言。
<!--**安裝界面語言定義**-->
<locale>
<langpack iso3="chn" />
<langpack iso3="eng" />
</locale>
5.<resources>……..</resources>
用於為安裝界面指定圖片或圖示
用於指定用戶自定義安裝精靈視窗定義XML檔案的位置
用於指定安裝精靈視窗中國際化資源XML檔案的位置
等等,例如:
<!--**安裝界面資源定義**-->
<resources>
<!--**XX安裝語言選擇視窗圖片**-->
<res src="langsel.jpg" id="installer.langsel.img" />
<!--**XX安裝說明檔案**-->
<res src="readme.html" id="HTMLInfoPanel. info" parse="yes" type="plain" encoding="GB2312" />
<res src="readme_chn.html" id="HTMLInfoPanel. info_chn" parse="yes" type="plain" encoding="GB2312" />
<!--**XX產品版本說明檔案**-->
<res src="license.html" id="HTMLLicencePanel.licence" parse="yes" type="plain" encoding="GB2312" />
<res src="license_chn.html" id="HTMLLicencePanel.licence_chn" parse="yes" type="plain" encoding="GB2312" />
<!--**快捷鍵定義描述**-->
<res src="shortcutSpec.xml" id="shortcutSpec.xml" parse="yes" type="xml" encoding="GB2312" />
<res src="Unix_shortcutSpec.xml" id="Unix_shortcutSpec.xml" parse="yes" type="xml" encoding="GB2312" />
<!--**Pack Lang**-->
<res src="packsLang.xml" id="packsLang.xml" />
<res src="packsLang_chn.xml" id="packsLang.xml_chn" />
<!--**自定義視窗定義描述**-->
<res src="UserInputSpec.xml" id="userInputSpec.xml" />
<res src="UserInputLang.xml" id="userInputLang.xml" />
<res src="UserInputLang_chn.xml" id="userInputLang.xml_chn" />
</resources>
6. ……. </panels>
本部分用於定義整個安裝過程,每個panel即是一個安裝精靈視窗,panel是按順序由IzPack調用的。IzPack內置了很多的Panel,另外它還支持用戶自定義的功能,主要是通過UserInputPanel來實現的,你可以通過在<resources>……</resources>中定義的ID為UserInputSpec.xml的資源(XML)中定義UserInputPanel視窗中用戶錄入項目及相關存放的變數。另外,Izpack支持條件用戶自定義Panel,即ConditionalUserInputPanel,你可以在<variables>….</variables>中通過變數來控制這樣的嚮導視窗的可見性。當安裝過程執行到InstallPanel時IzPack開始解壓安裝包到硬碟中,所以,一般來說所有的配置信息(例如,安裝目錄,安裝包的選擇等)都應在InstallPanel之前完成。在InstallPanel之後可以通過ShortcutPanel來顯示捷徑創建視窗,另外還可以通過ProcessPanel來執行一些後續操作。
<!--**安裝界面定義**-->
<!--**顯示公司版權資訊**-->
<!--**顯示ReadMe信息**-->
<!--**選擇安裝目標**-->
<!--**選擇安裝內容**-->
<!--**INSTALL_PATH**-->
<!--**選擇安裝類型:安裝到已有套用伺服器中安裝TOMCAT作為套用伺服器.**-->
<!--**INSTALL_TYPE:new|old**-->
<!--**顯示用戶安裝輸入配置**-->
<!--**開始安裝**-->
<!--**顯示快捷鍵創建視窗**-->
<!--**顯示安裝完成視窗**-->
</panels>
7. ……. </packs>
本部分主要用於定義安裝包,即將哪些檔案進行打包,以及將來安裝時如何進行安裝。通過可以將應用程式檔案分解成不同的安裝包,可以指定哪些pack是必須安裝的,哪些是可選的。
前邊我們講過,我們可以在中加入自定義嚮導視窗來允許用戶指定一些配置,這些配置信息被存放到變數中,我們可以利用用戶指定的值來替換應用程式中部分檔案中的內容。那么在定義pack時,就可以指定哪些檔案在安裝時需要進行解析(parseable)。需要注意的,你需要指定需要解析的方式(xml, javaprop, plain,shell),如查將javaprop類型的檔案解析類型設定為plain的話,可能就有問題,例如:如果變數的值為路徑,那么可能就會有問題。
另,對於每一個Pack在它安裝(copy檔案)之後,可以定義它執行一個程式,例如腳本程式。你可以利用這種功能來做一些工作,例如:你可執行腳本程式來導入資料庫數據等。

安裝實例

<!--**安裝包的定義**-->
<!--**安裝及運行輔助工具包.**-->
…………
</pack>
<!--**核心安裝包**-->
<description>在packsLang.xml和packsLang.xml_chn中描述了.</description>
<fileset dir="app" targetdir="$INSTALL_PATH\app">
<include name="*" />
<include name="**" />
</fileset>
<fileset dir="native" targetdir="$INSTALL_PATH\native">
<include name="*" />
<include name="**" />
</fileset>
<file src="clear.db.splash.gif" targetdir="$INSTALL_PATH" />
<file src="init.db.splash.gif" targetdir="$INSTALL_PATH" />
<file src="installer.properties" targetdir="$INSTALL_PATH" />
<file src="installer.xml" targetdir="$INSTALL_PATH" />
<file src="installer.bat" targetdir="$INSTALL_PATH" />
<file src="uninstaller.bat" targetdir="$INSTALL_PATH" />
type="javaprop" />
<executable targetfile="$INSTALL_PATH/installer.bat"
stage="postinstall" keep="false" failure="abort">
<os family="windows" />
</executable>
<executable targetfile="$INSTALL_PATH/uninstaller.bat"
stage="uninstall" keep="true" failure="abort">
<os family="windows" />
</executable>
</pack>
</packs>

檢查工作

另外,你的安裝程式在安裝過程中可能會需要其它的java包來完成一些工作,例如,你在自定義嚮導視窗中做了用戶輸入的資料庫連線有效性檢查,如果你是通過創建 JDBC連線來做的話,你就需要JDBC driver的jar,那么你就需要通過<jar />來加入這些jar包。例如:
<!--**安裝程式所需要的其它Jar資料夾**-->
<jar src="dbdrivers/mssqlserver.jar" stage="both" />
<jar src="dbdrivers/msutil.jar" stage="both" />
<jar src="dbdrivers/msbase.jar" stage="both" />
<jar src="dbdrivers/ojdbc14.jar" stage="both" />
<jar src="dbdrivers/orai18n.jar" stage="both" />
還有,如果你的安裝程式在安裝過程中需要調用native套用的話,例如:你的安裝程式界面中通過Java JNI訪問機器硬體的話,你就需要JNI的動態庫加入到安裝程式中。例如:
<!--**安裝程式所需要的Native檔案**-->
<native type="izpack" name="ShellLink.dll" />

編譯過程

一但,安裝定義檔案準備好了之後,你就可以利用IzPack對其進行編譯了,編譯的結果就是生成一個可執行的jar檔案,一般可命名為install.jar檔案。
當然了,在進行編譯之前,你需要根據安裝定義檔案來組織目錄並將相關的套用檔案放到相應的目錄下。IzPack對於這些沒有什麼特別的要求,一般情況下,你可以將需要安裝的檔案放到一個目錄下,在目錄下按照目標安裝結構進行組織檔案即可。將安裝定義檔案放到根目錄下。
在檔案組織好之後,即可進行編譯了。
有兩種方式進行編譯:
(1). Command Line 方式:
……> $ ..\bin\compile install.xml -b . -o install.jar -k standard
$為上面準備好的目錄,例如D:\IzPack\sample ..\bin\compile install.xml -b . -o install.jar -k standard
通過IzPack提供的compile.bat來執行即可。
(2). Ant方式:
首先,在Ant Build檔案中加入IzPack任務定義:
<taskdefname="izpack"
classpath="${izpack.dir}/lib/compiler.jar"
ClassName="com.izforge.izpack.ant.IzPackTask"/>
然後,調用izpack任務即可:
<izpackinput="${安裝定義XML檔案}"
output="${installer.jar}"
basedir="${上面準備好的目錄根目錄}"
izPackDir="${izpack安裝目錄}"
installerType="standard"
compression="bzip2"
compressionlevel="9"/>

相關詞條

相關搜尋

熱門詞條

聯絡我們