IzPack使用介绍

1.izpack简介:
izpack是基于Apache Software License 2.0许可的开源项目;
izpack是纯Java,对部分特性有针对不同平台版本的Library。例如:快捷键的创建。
izpack是一个用于解决安装程序制作的Builder工具;
通过izpack制作的安装程序可以运行于不同的操作系统,Windows, Linux, Unix等,只要安装了JDK1.4以及其后版本即可;
izpack优秀的模块化设计可以允许你定制安装程序外观、安装过程等;同时允许你通过其提供API调整izpack安装过程。
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 !.

2.原理及过程

利用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> ……. </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来执行一些后续操作。
<!--**安装界面定义**-->
<panels>
<!--**显示公司版权信息**-->
<panel classname="HTMLLicencePanel" />
<!--**显示ReadMe信息**-->
<panel classname="HTMLInfoPanel" />
<!--**选择安装目标**-->
<panel classname="TargetPanel" />
<!--**选择安装内容**-->
<panel classname="PacksPanel" /><!--**INSTALL_PATH**-->
    <!--**选择安装类型:安装到已有应用服务器中安装TOMCAT作为应用服务器.**-->
<panel classname="UserInputPanel" /><!--**INSTALL_TYPE:new|old**-->            
<!--**显示用户安装输入配置**-->
<panel classname="SummaryPanel" />
    <!--**开始安装**-->
<panel classname="InstallPanel" />
<!--**显示快捷键创建窗口**-->
<panel classname="ShortcutPanel" />
<!--**显示安装完成窗口**-->
<panel classname="SimpleFinishPanel" />
</panels>
                  
7. <packs> ……. </packs>
本部分主要用于定义安装包,即将哪些文件进行打包,以及将来安装时如何进行安装。通过<pack>可以将应用程序文件分解成不同的安装包,可以指定哪些pack是必须安装的,哪些是可选的。
     前边我们讲过,我们可以在<panels>中加入自定义向导窗口来允许用户指定一些配置,这些配置信息被存放到变量中,我们可以利用用户指定的值来替换应用程序中部分文件中的内容。那么在定义pack时,就可以指定哪些文件在安装时需要进行解析(parseable)。需要注意的,你需要指定需要解析的方式(xml, javaprop, plain,shell),如查将javaprop类型的文件解析类型设定为plain的话,可以就有问题,例如:如果变量的值为路径,那么在可能就会有问题。
另,对于每一个Pack在它安装(copy文件)之后,可以定义它执行一个程序,例如脚本程序。你可以利用这种功能来做一些工作,例如:你可执行脚本程序来导入数据库数据等。
下面是一个示例:
<!--**安装包的定义**-->
<packs>
<!--**安装及运行辅助工具包.**-->
<pack id="ToolKit" name="ToolKit" required="yes">
…………
</pack>
<!--**核心安装包**-->
<pack id="Core" name="Core" required="yes">
<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" />
<parsable targetfile="$INSTALL_PATH/installer.properties"
type="javaprop" />    
<parsable targetfile="$INSTALL_PATH/installer.bat" type="plain" />
<parsable targetfile="$INSTALL_PATH/uninstaller.bat" type="plain" />
<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>

8. jar & native & 其它:
另外,你的安装程序在安装过程中可能会需要其它的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,包括通过API以及扩展其现有功能,你需要认真深入了解IzPack.
关于安装定义文件的具体详细说明请参考IzPack参考手册,其中有非常详细的说明。它是整个安装程序制作的核心。功能非常强大,非常灵活。
  
编译:
一但,安装定义文件准备好了之后,你就可以利用IzPack对其进行编译了,编译的结果就是生成一个可执行的jar文件,一般可命名为installer.jar文件。
当然了,在进行编译之前,你需要根据安装定义文件来组织目录并将相关的应用文件放到相应的目录下。IzPack对于这些没有什么特别的要求,一般情况下,你可以将需要安装的文件放到一个目录下,在目录下按照目标安装结构进行组织文件即可。将安装定义文件放到根目录下。
在文件组织好之后,即可进行编译了。
有两种方式进行编译:
(1). Command Line 方式:
……> %IzPack_home%/bin/compiler.bat <安装定义文件>
即进入上面准备好的目录下,    通过IzPack提供的compiler.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"/>
通过如上任何一种方式都可以生成安装程序――――一个可执行的jar文件。      
所以通过IzPack我们可以很容易将制作应用安装程序。
关于IzPack的详细介绍请参考http://www.izforge.com/izpack/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值