现在的位置: 首页 > 综合 > 正文

【原创】使用Install4j为Javafx2.x程序制作Windows安装包[中篇]

2012年08月19日 ⁄ 综合 ⁄ 共 1694字 ⁄ 字号 评论关闭

这篇博文是对上一篇博文的修改,目的精简安装包的大小和安装之后占用的空间大小。

 

前篇中存在的问题:相同的JRE打包了两次,导致安装包的大小几乎翻了一倍和安装之后占用的空间大小也增加了50M多。

原因:仔细看前篇可以发现,使用FatJar打包得到的smarthome0.0.7_fat.jar已经包含了JRE7u6,然后使用install4j制作安装包的时候又静态绑定了JRE7u6

最终得到的安装目录如下:【注:图片是后来截的,其中的jar应该是 smarthome0.0.7_fat.jar 】,一个JRE目录就有70M多,然而在jar包中还有一个提取出来的JRE在里面。20120722093440

 

目标:只使用一个JRE!

步骤:

1. 不使用FatJar,只是使用Eclipse导出一个Runnable Jar,一定要是一个可运行的Jar。

20120722124933  image

 

但是对于引用的jar包它有三种处理方式:

(1)Extract:提取出来,放在得到的Jar中,也就是将其中的class文件都取出来,和项目的文件一同打包!

image

(2)Package:打包存放在得到的jar中

image

(3)Copy:复制出来,存放在和得到的jar在同一个目录下。

image    image

 

这里选择第三种方式:Copy!

 

2. 修改MANIFEST.MF 文件

在得到的jar中有一个文件夹 META-INF ,里面有一个文件 MANIFEST.MF 文件,内容如下:

注意其中的Class-Path,它们都是存放在打包生成的那个文件夹中的jar,其中还包含了JRE中的jar

image

所以,要做的就是修改这个文件,按照习惯,一般JRE是存放在jre文件夹中的,而第三方jar包是存放在lib文件夹中的。所以,新建lib文件夹,将项目中的第三方jar包放入其中

image

jre目录不用新建,因为最终要用install4j来绑定一个JRE,它会自动在安装目录建立文件夹jre存放绑定的JRE,只要知道有一个jre目录存在就行,内容就像平时安装的jre目录一样。

将MANIFEST.MF文件内容修改为:对于第三方jar包的路径类似 lib/xxxx.jar  对于JRE中的jar包,路径类似 jre/lib/xxxxx.jar,建议写在一行,因为容易错!改完之后,更新jar包即可。

image

 

3. 按照前篇中的方式对 smarthome0.0.8_runnableJar_copy.jar 制作installer。依然是static bundle一个JRE,依然是前篇中制作的JRE。

不同的是,这次要添加刚才新建的lib文件夹,最终的安装文件目录结构为:

image

注:前篇中的一个Bug。前篇中在 JRE Search Sequence中选择了一个系统的编译变量,其实可能是没有必要的,貌似随便给一个就行了。以下是我在install4j的帮助文档中看到的内容:

内容总结:

1. 静态绑定的JRE是会随着你的应用程序一起部署的,并且它是“绿色”的,不会修改注册表;

2. 如果静态绑定的JRE是不共享(建议选择这种方式)的话,那么在安装目录下建立一个jre文件夹,并解压绑定的JRE的内容到其中,这个JRE是其他的应用程序“看不到”的;

3. 如果是静态绑定JRE,那么install4j就会自动的将这个静态绑定的JRE作为JRE Search Sequence中的第一项。所以,如果是静态绑定的话,其实Search Sequence可以随便选择一个。

image 

 

20120722134600

 

image

 

有时候安装时需要询问用户是否创建桌面快捷方式,这个也可以在install4j中配置,方法如下:

在Intaller界面中的第一个界面 Screens and Actions中选择 Register Add/Remove item,点击绿色添加按钮,如下所示添加 Add  a desktop link

20120723131133

 

出现如下左边的询问框,确定即可,之后就会多出两个东西,如右图所示

2012072313115920120723131256

 

然后再配置Target file,也就是前面创建的 launcher!

20120723131347

 

4. 完了之后,得到的安装文件是30M左右,大约是之前的一半,安装新的版本之后,占用的磁盘空间是110M左右,减少了50M多!

运行之后的目录结构:

image   

 

image

 

O(∩_∩)O哈哈~    Enjoy the world of JavaFx!

抱歉!评论已关闭.