使用InstallAnywhere7.1制作Java exe程序安装包
对于已经完成的Java应用程序开发项目,从商业化角度看,应该制作成安全稳定的安装程序包来保证产品的安全和企业的利益。现在市面上比较高效的商业化工具有installshield,installanywhere,install4j等,installshield适合C,C++,Delphi,PB,VB等;而后两者适合Java应用程序的打包制作。下面主要以InstallAnywhere7.1为例,详细说明如何来给一个Java应用程序制作安装包。
Java应用程序项目开发测试完成后,企业需要将此打包存档(即jar文件),并制作成商业化安装程序。
各版本的JDK都提供jar实用程序,其基本语法如下:
jar <option string> [JAR] [manifest file] [input files]
option string用于指定jar实用程序执行的操作,因此必须指定(下面列出各参数及使用方法)。
c
创建新的或空的压缩档
v
列出目录表
x
解压所有文件
x file
解压指定文件
f
指出“我准备向你提供文件名”。若省略此参数,
jar
会假定它的输入来自标准输入;或者在它创建文件时,输出会进入标准输出内
m
指出第一个参数将是用户自建的详情表文件的名字
v
产生详细输出,对
jar
做的工作进行巨细无遗的描述
O
只保存文件;不压缩文件(用于创建一个
JAR
文件,以便我们将其置入自己的类路径中)
M
不自动生成详情表文件
,
大多情况不会用到。
下面是调用
jar
的一些典型方法:
jar cf myJarFile.jar *.class
用于创建一个名为
myJarFile.jar
的
JAR
文件,其中包含了当前目录中的所有类文件,同时还有自动产生的详情表文件。
jar cmf myJarFile.jar myManifestFile.mf *.class
与前例类似,但添加了一个名为
myManifestFile.mf
的用户自建详情表文件。
jar tf myJarFile.jar
生成
myJarFile.jar
内所有文件的一个目录表。
jar tvf myJarFile.jar
添加
“verbose”
(详尽)标志,提供与
myJarFile.jar
中的文件有关的、更详细的资料。
jar cvf myApp.jar audio classes image
假定
audio
,
classes
和
image
是子目录,这样便将所有子目录合并到文件
myApp.jar
中。
一般来说,在Java应用程序开发的过程中都会用到第三方库文件,在制作安装包时最好将企业自主开发的和第三方库分离开。因此,在制作成jar文件之前,先写一个mainfest文件(用户自建详情表单文件,后缀名是.mf),在制作jar文件的过程中用于指出一个使用验证信息说明相关jar文件的文件(即当前项目使用到的第三方jar库文件)。
<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"> <v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"> </v:shapetype></v:shapetype>
<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style="WIDTH: 378pt; HEIGHT: 240pt"><v:imagedata src="file:///C:\DOCUME~1\zwql\LOCALS~1\Temp\msohtml1\01\clip_image001.png" o:title=""></v:imagedata></v:shape><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style="WIDTH: 378pt; HEIGHT: 240pt"><v:imagedata src="file:///C:\DOCUME~1\zwql\LOCALS~1\Temp\msohtml1\01\clip_image001.png" o:title=""></v:imagedata></v:shape>
图1 Manifest文件的编写
如果使用JBuilder(JBuilder2005)开发Java应用程序项目,可以通过界面来操作生成所需要的jar档案文件:
1. 打开需要制作jar文件的工程;在当前工程下,在Object Gallery中(通过File—)New打开),选择Archive—〉Application;
图2 JBuilder2005 Object Gallery
2. 点击OK之后,进入各参数设置界面:
图3 JBuilder2005 Archive Builder Step 1
3. 按照提示一步步填写,选择需要打包的文件。
图4 JBuilder2005 Archive Builder Step 2
4. 在Archive Builder的第三步中,不添加项目相关的第三方jar包,都选择Exclude All(如果使用JBuilder2005制作单个可执行程序,应都选Include All)。
图5 JBuilder2005 Archive Builder Step 3
5. 添加先前已经定义好的mainfest文件或在Step4中创建:
图6 JBuilder2005 Archive Builder Step 4
6. 余下的四个步骤读者可以自己根据Archive Builder的提示进行下去,非常简单,这里就不再多述。
7. 完成之后,再对其进行编译,便可得到相应得jar文件。
图7 编译jar文档
制作好档案文件(Jar文件)后,打开InstallAnywhere7.1,新建一个project,进入Advanced Designer(对于比较简单的Java应用程序,可以使用Project Wizard来制作,这里就不作说明,下面的步骤都在Advanced Designer下进行):
图8 InstallAnywhere7.1 Enterprise Edition Advanced Designer
1. :基本的安装程序信息设置,如信息、描述、文件设置、平台、区域、规则等等。一般都能看懂,并且很容易正确填写。
2. Project:定义安装程序的安装界面。如splash screen,background,frameUI等最直观的界面。还可以增加额外的Panel,如License,Password,Serial Number等,这些都在“Installer Panel Addition”和“Install Progress Panel”中定义。还可以定义在安装进行时的闪动画面Billboards;还可以增加安装帮助,给用户提供必要的安装信息。
图9 Advanced Designer Installer UI
Installer UI
3. :定义java应用程序需要安装的组件。可以设置好典型的安装组件(Typical),也可以让用户自定义组件;这些在Install Sets,Features,Components及Modules中设置。
图10 Advanced Designer Organization
Organization
4. :这个模块主要定义安装程序运行时的各个执行动作,如introduction、License Agreement、Serial Number、Choose Folder等。是对Install UI模块中定义的各Panel进行解释和执行,所以这里的panel数量和顺序一定要和Install UI中定义的相一致。
图11 Advanced Designer Pre-Install
Pre-Install
5. :指定需要打包的文件,在这个模块中定义的路径就是安装程序执行完成后装在本地PC上的程序内部路径。通过Set Classpath和Add Launcher指定程序入口,还可添加快捷方式在程序组中。
图12 Advanced Designer Install
Install
6. :定义程序安装完成后的工作,如添加动态配置、注册表更改及重启计算机等动作,对于更高级的使用还可以对各Action进行脚本编写,具体的脚本编写规则及变量参数等,可以参考InstallAnywhere帮助文档。
图13 Advanced Designer Post-Install
Post-Install
7. :类似Pre-Install,定义卸载前的动作,如选择要卸载的模块等。
图14 Advanced Designer Pre-Uninstall
Pre-Uninstall
8. :类似Post-Install,添加卸载完成后的操作,如重启计算机,添加相关提示等。
图15 Advanced Designer Post-Uninstall
Post-Uninstall
9. :上述的各个模块都已经定义完成之后,可以选择不同的平台,VM版本,需不需要VM,以及跟踪日志,MSI文件生成等。最后,就可以用InstallAnywhere生成我们所需要的安装程序了。
图16 Advanced Designer Builder
Build