一键安装双击运行——Java安装程序制作

本文提供了一个详细的指南,教你如何使用Java技术,包括JRE精简、exe4j生成exe文件、InnoSetup打包安装程序,实现Java桌面应用的便捷部署。通过精简JRE、自带有JRE的exe文件以及使用InnoSetup制作安装包,简化了Java应用的安装流程,使应用如同普通Windows程序般易于分发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户端是否安装有jre、jre版本、jre在哪里下载、如何用jre启动Java应用等等。不要说刚接触电脑的人,就算是比较熟悉电脑,如果没有接触过Java,面对一个Java应用,如何在Windows下启动它,估计都会折腾半天。所以这个是导致Java桌面应用被一些人所讨厌的最大原因,Java的优势是“一次编写,随处运行”,跨平台特性确实很好,但并不是每个人都需要跨平台,而且有时候JVM平台或版本问题也会造成“一次编写,到处测试”的尴尬。对于固定平台下的Java应用,最好的方式莫过于带着JRE,让用户轻松点击就能运行。下面我们来解决这样的问题。

  针对windows平台,主要方法是:先将JRE进行精简,再使用工具exe4j 来解决双击运行使用的问题,最后用Inno Setup打包成安装程序, 这样一来,我们的Java应用就和普通的windows应用程序一样了。

本文相关下载

本教程PDF格式文档
http://www.uushare.com/user/javapro/file/1418624
http://www.rayfile.com/files/7840998c-1824-11de-942b-0014221b798a/

本教程示例程序
http://www.uushare.com/user/javapro/file/1418316
http://www.rayfile.com/files/3ee1f95c-1826-11de-bcfb-0019d11a795f/

exe4j 4.2 注册版
http://www.uushare.com/user/javapro/file/1418327
http://www.rayfile.com/files/c56bebba-1826-11de-9b55-0019d11a795f/

Inno Setup 汉化增强版 + ISTool汉化 + 反编译套装 + ISFD界面设计汉化
http://www.uushare.com/user/javapro/file/1418305
http://www.rayfile.com/files/95c91dd9-1826-11de-89b1-0019d11a795f/

一、精简JRE

  JRE6默认安装大小大约90M,而一般程序只有几M甚至几百K,带JRE运行,感觉非常不合理,分发与网络传输过程也会大受影响。关于JRE的精简参照下面几篇相关文章:

Java程序发布之jre篇
[url]http://www.blogjava.net/gdws/archive/2006/12/25/89898.html[/url]
如何制作最小的RCP程序压缩包(包含JRE)
[url]http://www.eclipseworld.org/bbs/read-cec-tid-5777.html[/url]
让Java程序带上精简的jre(附工具)
[url]http://glemir.xplore.cn/archives/200[/url]
JRE极限精简探求手册[1]——精简一个Swing的即时战略游戏
[url]http://cping1982.blog.51cto.com/601635/129630[/url]
Java应用——精简JRE体积的小工具
[url]http://blog.youkuaiyun.com/cping1982/archive/2008/09/02/2865198.aspx[/url]
JVM rt.jar 精简工具图形外壳 0.1
[url]http://www.blogjava.net/beansoft/archive/2008/12/19/247321.html[/url]
可以运行 RCP/Swing 的迷你JRE 6(3.75MB)
[url]http://www.blogjava.net/beansoft/archive/2008/01/18/176353.html[/url]
可以运行SWT的精简版JRE 1.4.2_04, 压缩后仅1.3MB
[url]http://www.blogjava.net/beansoft/archive/2007/03/07/102381.html[/url]
  总得来说JRE精简是一个比较复杂的工作,如果不清楚某部分的功能不要轻易进行删减,否则可能产生一些未知的错误。pack200压缩工具在对某些重新打包过的rt.jar文件压缩时会产生错误,如果使用的话一定要注意控制台的输出信息。

二、使用exe4j生成exe可执行文件

  下面是我的一个完整Java示例程序 —— TestProcessBar。可以看到示例程序已经附带了jre , 下面先使用exe4j给它制作一个exe可执行文件(即图中的TestProcessBar.exe),并指定我们自带的jre 。


[img]http://dl.iteye.com/upload/attachment/602968/8dd2e9f2-1a7b-3e8d-b26e-0f4c8e5444e1.jpg[/img]


以下是exe4j的启动界面,点击Next开始创建配置文件。



[img]http://dl.iteye.com/upload/attachment/602970/3c755215-2755-3017-9bb7-92e26fb32bbb.jpg[/img]


接着选择要创建的exe文件类型,在这里我们选择第一个,这样其实是为程序创建一个可以双击运行的启动器,可以保证程序仍具有跨平台的特性。如果选择第二个,可以把程序完全编译成exe文件,可以更好的保护你的程序不被反编译。


[img]http://dl.iteye.com/upload/attachment/602972/02ab75f2-6f11-3204-a50f-2786d9e75465.jpg[/img]


接下来设置程序的短文件名,源文件夹路径(可以使用exe4j工程文件的相对路径。这里我的exe4j文件保存在launcher目录下,所以使用的源路径为[..],即上一级目录),以及要生成的exe文件的存放目录,exe存放目录相对路径为源文件夹,这里我把它指定为当前源文件夹。


[img]http://dl.iteye.com/upload/attachment/602974/22e93453-c25a-31f1-ae7f-bb47800d22f5.jpg[/img]


接下来,可以给我们即将生成的exe文件起一个名字,如我的“TestProcessBar.exe”,还可以给它指定一个ico类型的图标,其它按默认就可以了,如图:


[img]http://dl.iteye.com/upload/attachment/602976/84829992-0c2f-3a88-930d-cc61998b6855.jpg[/img]


这里我们还可以为要生成的exe文件附加一些信息


[img]http://dl.iteye.com/upload/attachment/602978/ea128335-6cb4-362e-a293-4e2617c041bb.jpg[/img]


接下来的这一步,我们需要把程序中所用到的类路径添加上去。然后指定程序的启动类,其它如果没有必要的话,则按默认即可,点击+号添加类路径:


[img]http://dl.iteye.com/upload/attachment/602980/e33ab3d5-66d0-3c9c-89b6-cc983e7d09ce.jpg[/img]


基本上我们所需要用到的jar文件都要添加上去,可以逐个添加上去,也可以添加整个文件夹或者使用系统环境变量,为了使程序能够随处运行,强列建议使用相对路径,并且不要使用环境变量。添加好类路径之后回到上一步去选择"Main Class"即可。


[img]http://dl.iteye.com/upload/attachment/602982/cdd446d5-0d0e-3c5f-9e36-1ec831896845.jpg[/img]


接下来先选择我们的程序所需要的jre版本, 然后便是选择我们自带的jre了,这一步不是必须,但是为了更好的分发程序,我们自带了jre, 所以有必要把我们自带的jre指定为首选的运行环境,如图选择Search sequence


[img]http://dl.iteye.com/upload/attachment/602984/6a83d5ab-be92-3e79-b671-8ec1f6b679db.jpg[/img]


默认情况下程序会去系统的注册表,环境变量及相关的目录查找jre,因为我们只需要自带的jre,所以这里我把默认的选项移除了(如果觉得有必要的话可以把默认的选项放在自带jre选项的后面,不删除),然后添加我们自己的jre所在的目录路径,点+号开始:


[img]http://dl.iteye.com/upload/attachment/602986/7b5547d2-b8d0-32ee-aa7e-69392b7f3ce2.jpg[/img]


这里还是建议使用相对的目录路径:


[img]http://dl.iteye.com/upload/attachment/602988/113ba984-6a85-324b-b95f-34f102bc677a.jpg[/img]


指定jre所在的目录,如图:


[img]http://dl.iteye.com/upload/attachment/602990/c96e221a-d40f-3a3c-8f05-969605e11e60.jpg[/img]


最后我的jre目录路径就是这样的:.\jre


[img]http://dl.iteye.com/upload/attachment/602992/366d737f-467c-3e99-8843-0bda0243d032.jpg[/img]


下面这一步启动画面,有兴趣的可以自已设置一下。


[img]http://dl.iteye.com/upload/attachment/602994/b4607fb2-1ae7-3ba4-9eb2-daeb755235cd.jpg[/img]


程序最终生成了这个执行文件: TestProcessBar.exe
现在使用它,已经可以正常利用我们自带的jre启动程序了,但是整个程序仍有近19M的大小。
这时候打个压缩包,已经可以进行发布了。但是为了更大的压缩,并制作更加方便易用的程序,下面我们使用Inno Setup进行压缩并制作一个安装包。


[img]http://dl.iteye.com/upload/attachment/602996/f62fe60c-3a09-370f-bcb8-f24f80d30db8.jpg[/img]


三、使用Inno Setup为程序制作打包安装程序

安装后启动脚本向导,如图所示:



[img]http://dl.iteye.com/upload/attachment/602998/1d5fdfad-bbcb-3652-9eea-811506ab01d9.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/603000/9b0a086a-8cbe-381e-a572-c9b9f90e3bf9.jpg[/img]


这里指定程序的启动文件,即刚才用exe4j创建的exe文件。然后将整个程序目录都包含进去就可以了(这里因为程序中有一些exe4j和inno setup的工程文件,故有所选择),接下来的基本上一直按下一步就可以了,其中要设置一下安装程序的输出目录,直到脚本向导完成


[img]http://dl.iteye.com/upload/attachment/603002/8a108a39-ace0-3fc1-9083-ff9714e1904e.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/603004/726f4291-9f8a-3d45-9af2-5364c8609456.jpg[/img]


[img]http://dl.iteye.com/upload/attachment/603006/c17e2c89-c0f9-3d39-b7c5-6f3ddc4e4b0f.jpg[/img]


然后执行该脚本即可:


[img]http://dl.iteye.com/upload/attachment/603008/53f7581a-a69a-3a2c-9eac-f67ecfc680c3.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/603010/c4a6c4cb-8ad1-3c2e-9478-45fb787462b2.jpg[/img]


然后找到Inno Setup的输出目录,就可以看到编译输出后的安装包了,如下图:setup.exe
大小已经压到了6.38M。


[img]http://dl.iteye.com/upload/attachment/603012/48be64ac-2e76-388c-8a3d-e92d53663f41.jpg[/img]


利用这个就可以快速轻松的安装你的Java桌面应用了。


[img]http://dl.iteye.com/upload/attachment/603014/2280126a-f13b-33ed-bfc2-203b109f8141.jpg[/img]


四、总结
  总体来讲,我们的目的是为了让我们编写出的程序更加的方便易用。通过以上的学习,现在我们已经可以制作出可双击运行、不用用户另装jre的、简单易用的程序安装包。大家可以对jre精简、exe启动器的制作、打包安装进行更深入的学习。本教程中的工具只是做一个抛砖引玉,还有很多类似功能的工具有待大家去研究,最后,希望大家能够制作出属于自己的简单明快的一键式Java程序。

原文链接:http://www.blogjava.net/javapro/archive/2009/03/24/JavaAppSetup.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzj0470

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值