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

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

2013年02月23日 ⁄ 综合 ⁄ 共 4684字 ⁄ 字号 评论关闭

最近因项目需要,我需要给自己用Javafx2.1开发的桌面软件SmartHome制作Windows安装包,由于过程还蛮复杂,于是记录下来留给以后看。

 

一.制作工具

1.Fatjar:Eclipse 的插件,它的插件更新网址:http://kurucz-grafika.de/fatjar

2.Install4j:一个使用Eclipse RCP开发的收费的用于为java程序制作安装包的软件,提供90天的试用期,官方下载网址:http://www.ej-technologies.com/products/install4j/overview.html

3.JRE:需要的是JDK7u6,下载地址:http://jdk7.java.net/download.html  这个是目前(截止2012-7-17)最新的JRE,因为它已经将Javafx2.2包括其中了

详细信息网址(开源中国):http://www.oschina.net/news/30075/javafx-2-2

诚然,信息中提到该JDK中提供了两种用于打包Javafx应用程序的工具,一种是使用jdk自带的工具javafxpackager,一种是使用ant,个人感觉两种方式都不好用,特麻烦...囧

官网上的帮助文档地址:

Native packaging for JavaFX : https://blogs.oracle.com/talkingjavadeployment/entry/native_packaging_for_javafx

Deploying JavaFX Applications : http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm

 

本教程的主要内容就是使用上面的工具Javafx应用程序制作windows安装包

 

二.制作步骤

1.安装JDK7u6,安装时我指定JRE安装在和jdk的同一个目录下,文件夹的名称是jre7u6,我安装之后的目录是 D:\Java\jdk1.7.0_06  相应的jre目录是 D:\Java\jre7u6

将SmartHome项目的java环境换成刚才安装的jdk,方法很多,我习惯新建User Libarary,取名为jre7u6-javafx2.2(随便命名)

删除以前的分开来的jre和javafx的rt,添加这个jre一个即可!

20120717125203

2.安装Farjar,Eclipse插件的在线安装方式,安装完成之后重启Eclipse,点击项目,选择build Fat Jar,配置一些基本信息,例如MainClass,ClassPath

第二页要选中项目所需要的第三方jar包

image    image   image

3.经过前两步得到了Jar包 smarthome0.0.7_fat.jar,在项目的根目录下,然后新建一个文件夹SmartHome,存放一些制作安装包所需要的内容,大致内容其实也就是几个:

(1)项目打包好的Jar包 smarthome0.0.7_fat.jar

(2)软件的图片资源,也就是logo图标,Splash图片等等,可以没有

(3)第三方jar包,因为上面的fatjar已经将所需要的第三方jar打包好了,所以这里可以不用了  ......

image

4. 安装Install4j,我下载了试用版,只能试用90天,不过够我用了,不过,试用版本得到的软件会有一些烦人的提示哟,不喜欢的话就去下破解版吧或者buy it!

安装好了之后,新建一个project,取名smarthome,保存到哪里都行,这里我还是保存到了SmartHome目录下,因为install4j这个软件经常需要添加文件或者文件夹

它默认是进入的是该project所在的目录

image

5.接下来是最关键的一步:制作JRE Bundle,这是为了后面的media file的制作做准备

原因是这样子的:install4j的server上没有最新的jdk7u6,而客户机一般是没有安装java环境的,即使有,也不可能是最新的jre7u6,所以,要让软件绑定这个特定的jre!

为了绑定这个特定的jre,首先就是要制作一个JRE Bundle,然后在后面的media file的配置中可以选择这个jre bundle

详细内容可以查看install4j的安装目录下的帮助文档:jreBundle.html,写的很好很详细

在install4j的主菜单中选择 Project->Create a JRE Bundle,开始制作。

在 Select the JRE中选择第一步中安装的jre7u6目录

在Output Directory中,这里是指定生成的jre bundle文件的导出路径,默认是放在install4j的安装目录下的jres文件夹中,因为我之前已经制作过了一次,

所以jres目录下已经有了这个jre bundle,所以我重新指定导出到前面创建的SmartHome目录下,因为我通过一次制作错误发现其实查找路径包含了当前的install4j project的根目录!

但是帮助文档中并没有提到!

在帮助文档 Media File Wizard: Bundled JRE 中说到JRE Bundle文件的查找路径是 $INSTALL4J_HOME/jres and {user home directory}/.install4j5/jres

“If you choose to bundle a JRE by selecting the "bundle the following JRE" radio button, you have to choose a JRE from the drop down list below it. If you select "manual entry" in the drop down list, a text field will appear where you can enter a file name with compiler variables. Please note that you cannot enter a path here, but only a bundle filename that will be searched in $INSTALL4J_HOME/jres and {user home directory}/.install4j5/jres. The existence of this bundle file will be checked only at compile time, not by the wizard.”

image     image     image

在Bundle file name是用于指定budle文件的名称,指定Java version和Custom ID,不指定的话install4j自己能够检测出来的

20120717140852

其他的步骤默认即可,最后生成bundle windows-x86-1.7.0.6_jre7u6-javafx2.2.tar.gz 是一个压缩文件,至于为什么是Linux下常见的压缩文件我也不知道,软件开发者喜欢?也未必。。。

生成的budle文件的名称  {platform}-{Java version}-{Custom ID} 后面两个可以自己指定,如果不指定使用默认,那么生成的bundle文件是 windows-x86-1.7.0_06-ea.tar.gz

image

6.开始真正的制作安装包!我只介绍我需要配置的步骤,不详细描述Install4j的具体使用!

使用教程参考网址:

Install4j使用指南: http://wenku.baidu.com/view/f8abc62ded630b1c59eeb544.html###

用install4j为Java打包exe教程: http://wenku.baidu.com/view/d0fb8e0716fc700abb68fcc2.html###

系统安装包设计开发说明(By Install4j): http://wenku.baidu.com/view/20f86306bed5b9f3f90f1ced.html###

 

(1)General Setting

在Application Info中设置软件的Full Name和Short Name以及版本信息

在Java Version中设置最小的版本号是1.7,并删除JRE Search Sequence中的所有项---这不是一般的常见的配置方式,因为打包Javafx本身就不常见!它的JRE是必须要随着安装包一起走的!

一般情况是这样子的,按照搜索的顺序选择有合适的满足最大最小条件的JRE来运行程序,这里我们不需要搜索,而是绑定前面制作好了的JRE!

在Language中选择第一项:简体中文

在Media File Options中设置生成的安装文件的保存路径,为了方便,我还是保存到SmartHome文件夹中,文件的名称使用默认的pattern来生成

其他的部分保持默认即可

image  image  

image image

 

(2)Files

在Define Distribution Tree中点击 Installation Directory,然后选择添加文件或者文件夹,选中使用Fatjar导出的jar包和软件的logo图片,其他的默认即可

image   image

最终结果:一个jar,一张图片

image

 

(3)Launchers

新建一个launch,选择 Generated launcher

在Executable info中设置启动程序exe文件的名称:SmartHome,如果只允许一个实例运行,那么选中Allow Only a single running instance of the application

在Icon中设置软件的icon,选中前面导入的logo

在Java Invocation中的Class Path中导入前面的jar包,并指定Main Class

其他部分保持默认即可

image     image           20120717142339     image   

image       image

 

(4)Installer

全部保持默认

 

(5)Media

新建Media File,选择Installer,并且type是windows

在Configure installer options中设置安装到客户机子上的文件夹的名称,默认是shortname,我改为了编译时的变量fullName的值

重点在Bundle JRE(绑定JRE)中,选择Bundle the following JRE,并且选择Manual entry,在后面的文本框中输入前面制作的JRE Bundle的文件名 windows-x86-1.7.0.6_jre7u6-javafx2.2 

注意,不包含 .tar.gz, 还要注意的是这个文件是在SmartHome目录下的,也是可以找到的!详情看前面的制作介绍!

image  image  image      image

 

(6)Build

点击Start Build,报错了,一定要在Application Info中设置一个JRE的搜索路径,由于这个JRE是静态绑定的,所以选择环境变量  sys.withJre

它的描述中提到了如果JRE是静态绑定到media file中的,那么这个变量就是一个包含“_with_jre”的变量,否则就是空字符串

image      20120717150100     

 

配置好了之后就重新Start Build,最终结果:

image image

 

三.安装过程

双击生成的 smarthome_windows_1_0_0.exe 由于使用的是试用版本的install4j,所以会有一个提示窗体弹出,确定即可

20120717161259

然后进入安装向导:

(1)

image

(2)

image

(3)

image

(4)

image

(5)

image

(6)

image

 

至此就安装好了,开始菜单可以看到,点击运行即可,一开始也会有一个install4j的提示,确定即可

image

 

登陆界面:

image

 

主界面:

image

 

至此,就结束啦!O(∩_∩)O哈哈哈~   Enjoy the world of JavaFx !

【上篇】
【下篇】

抱歉!评论已关闭.