制作Java桌面程序的一键安装包

一、简介

这个打包程序主要包含了对Java程序的普通打包、对程序的管理员权限设置。因为自己打包的时候要求程序在32位操作系统和64位操作系统下都能使用,所以有些打包步骤和设置都不相同。打包过程中主要使用到的软件有exe4j、Inno Setup;修改用户权限时使用到了eXeScope.exe和ResHacker.exe。

二、具体打包步骤

1.准备好要打包的完整程序。在这个程序中包含着JRE,打包后的程序用户轻松点击就能运行。

 

2.使用exe4j制作一个exe执行文件,并指定自带的JRE。以下为exe4j启动界面,点击下一步开始创建配置文件。

 

3.选择类型,在这里选择第一个,保证程序仍具有跨平台特性。如果选择第二个,可以把程序完全编译成exe文件,可以更好地保护程序不被反编译。 

4.设置程序的短文件名、源文件夹路径(比如我的文件夹放在桌面路径为C:\Users\Administrator\Desktop\MyExample),以及生成的exe文件存放的目录,exe存放目录必须指定到源文件夹下。

 

5.为生成的exe文件命名,也可以给它指定一个ico类型的图标。其他设置如图。

 

6.把程序中所用到的类路径添加上去,然后指定程序的启动类,其他如果没有必要,可不填。

 

  基本上程序使用到的Jar文件都要添加,可逐个添加,也可以添加整个文件夹或者使用系统环境变量,为了让程序在其他地方也能完美运行,建议使用相对路径,并且不要使用环境变量。添加好类路径后一定要选择”Main Class”,否则打包后的程序也是不能执行的。

 

7.把自带的JRE包含到程序中,先设置我们程序需要的JRE版本。

 

8.移除默认选项,添加自带的JRE。

 

9.接下来直接点击下一步即可,直到最后一步完成,可在目录下找到生成的exe文件。

 

 

三、使用Inno Setup进行压缩并制作一个安装包

1.选择新建一个脚本。

 

2.填写应用程序名、版本号、程序发布者以及应用程序网站。

 

3.点击下一步。

 

4.指定程序的启动文件,即刚刚用exe4j创建的exe文件,并将整个程序目录都包含进去。

 

5.接下来的几步都可以直接选择下一步。完成后,运行这个脚本。

 

6.等待编译

 

7.编译完成后在默认输出目录里可以找到生成的安装包。

 

8.双击安装包,根据提示就可以完成安装过程。最终我安装好的程序如图。

 

四、给用户添加管理员权限。

对于有些程序来说,需要管理员权限才能正常运行。虽然用户在使用时可以选择“以管理员身份运行”,但是这样会影响用户体验。在这里介绍一下在打包的过程中添加管理员权限的方法。

使用Inno Setup生成脚本后,在[Setup]节点添加PrivilegesRequired=admin。然后编译脚本,这一次生成的exe文件,在安装后能够直接以管理员权限正常运行。

依靠以上的方法我的程序在32位操作系统下能够正常运行,但是在64位操作系统下不能够正常运行。因为我打包的时候JRE是32位下的,在exe4j下打包时也需要选择打包的程序是32位还是64位。

五、打包64位操作系统下使用的程序

前面的步骤与二中的具体打包步骤相似,为程序命名的步骤起有所区别。记住要准备在64位操作系统下使用的JRE包含在文件夹中。

1.为了与32位打包过程有所区别,在命名后都添加了标志。填好相关内容后选择“Advanced Options”中的”32-bit or 64-bit”。

 

2.勾选当前选项,如果不勾选的话还是生成的32位程序。

 

3.设置权限,选择第三个即为管理员权限。

 

4.接下来的步骤和打包32位程序相同。直到生成exe文件。注意添加JRE时一定要添加64位的。

5.使用Inno Setup生成安装包时,修改管理员权限除去上述步骤还应该添加一些步骤如下。

[1]       找到Inno Setup的安装路径,如C:\Program Files\Inno Setup 5,找到SetupLdr.e32文件。

 

[2]       下载使用ResHacker.exe可以对这个文件进行修改。修改后注意保存。

 

 

6.生成的64位程序安装步骤与32位程序安装步骤一样,在64位下能完美运行。

64位下打包赋予了 管理员权限后图标变成了如下图,而在32位系统下图标并没有什么变化,只能在使用过程中感受到不同。

 

六、致谢

在完成打包过程中,读了很多相关文章,感谢作者提供的帮助。

附文章地址:

http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html

http://www.cnblogs.com/walker-lc/articles/3470679.html

http://www.cnblogs.com/SnailProgramer/p/4243666.html

http://blog.csdn.net/inputuconfirmcode/article/details/39485815

 

posted @ 2016-06-24 15:52  拾穗云谷  阅读(4771)  评论(0编辑  收藏  举报