一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞

    对于作Java桌面应用来说,比较烦人的就是安装部署问题,客户端是否安装有jre、jre版本问题、jre去哪下载、如何用jre启动你的Java应用?不要说刚接触电脑的人,就算是比较熟悉电脑,如果没有接触过Java,面对一个Java应用,如何在Windows下启动它,估计都会折腾半天。如果不是因为这个问题,Java在我的眼里算是最完美的语言了,也是我最喜爱的语言。
    所以我认为这个是导致Java桌面应用被一些人所讨厌的最大原因,Java的优势是“一次编写,随处运行”,跨平台特性确实很好,但并不是每个人都需要或都想要跨平台,而且有时候JVM平台或版本问题也会造成“一次编写,到处测试”的尴尬。
    最好的方式莫过于带着JRE,让用户轻松点击就能运行。下面我们来解决这样的问题,有什么好的建议或方法请其他朋友多多指教或补充!
    针对windows平台,让用户一键式安装,双击使用, 使用工具exe4j + Inno Setup, 这两个工具都可以在网上找到,不熟悉的可以多搜搜,使用起来也不难。
    带着JRE运行,JRE的大小应该是最让人头疼的,我默认安装的jre6大小达到80M,而程序只有200-300k左右,感觉非常不合理,分发与网络传输过程也会大受影响!为了解决这个问题我一直在网络上搜索“瘦身版”的JRE,无意中搜到了Beansoft老师介绍的一篇关于迷你JRE的文章,相关的JRE下载后解压约14M左右,试用了一下,相对于我的应用缺少了一些类文件,关于部分xml操作类,及swing桌面应用框架相关连的部分类也找不到,最后借鉴了一下,自己把一个完整的JRE从80M瘦到了38M,去除了很多不需要的类文件,当然,如果耐心一点还可以再瘦下去,再抽掉一些类文件。
    在这个基础上再配合Inno Setup这个安装包制作工具,最后把整个程序从40M压到了8M,下面看看关于整个操作过程,关于JRE的瘦身有些烦琐就不写了,而且SUN的JRE瘦身计划也在进行,相信很快会有更小的瘦身版JRE推出,自己没有必要再去费神。
   
    下面是我的一个完整的Java程序 —— MyLoading
   

可以看到已经附带了jre1.6 , 下面先使用exe4j给它制作一个exe执行文件(即上图的MyLoading.exe),并指定我们自带的jre1.6 。以下是exe4j的启动界面,点击下一步开始创建配置文件。

   

接着选择类型,我们选择第一个,这样可以保证程序仍具有跨平台的特性。如果选择第二个,可以把程序完全编译成exe文件,可以更好的保护你的程序不被反编译。

接下来设置你的程序的短文件名,源文件夹路径(如我的:E:\MyLoading),以及要生成的exe文件的存放目录,exe存放目录必须指定到源文件夹下,这里我把它指定为E:\Myloading的根目录下。

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

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

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

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

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

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

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

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

下面这一步只是简单的给程序添加一个启动画面,然后按默认下一步下一步就可以了。


程序最终生成了这个执行文件: MyLoading.exe
现在使用它,已经可以正常利用我们自带的jre启动程序了,但是整个程序仍有40M的大小.
现在我们使用Inno Setup进行压缩并制作一个安装包。

Inno Setup的下载安装请到网上搜索,安装后启动脚本向导,如图所示:

整个过程很简单:


这里指定你的程序的启动文件,即刚才用exe4j创建的exe文件,并将你的整个程序目录都包含进去就可以了,接下来的基本上一直按下一步就可以了,直到脚本向导完成,




然后执行该脚本即可:





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

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

huliqing
Email:huliqing@live.com
QQ: 31703299
学习永无止境,欢迎一起交流研究...




- huliqing@huliqing.name
- http://www.huliqing.name

posted on 2008-04-18 06:34 huliqing 阅读(38486) 评论(56)  编辑  收藏 所属分类: Swing

评论

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-18 08:30 日月雨林

太棒了博主,你的文章总是能够让我受益匪浅  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-18 09:01 隔叶黄莺

exe4j还有一个兄弟产品,叫做 install4j,不过我也只是用过 exe4j,蛮不错的

相对 C++ 写的程序的体积 几十,几百K 而言,java程序还是显得过于肥大,  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-18 09:06 蒋家狂潮

感觉很不错,先收藏,回头再看,^_^  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-18 09:23 huliqing

呵呵,期待更瘦的JRE出现吧,到时候带着JRE满天跑反而会变成Java的优势了。能把它整到10M以下,目前我自己感觉还是挺满意的了。 对于SUN的消费者版JRE, 听说会整到4M左右,如果确实能做到这样,应该是很激动人心的。
  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2008-04-18 09:45 jim

8M的话这能提供下载么,解开后想研究下你的那个jre,呵呵  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-18 10:24 huliqing

@jim
呵呵,比较抱歉,因为blogjava的空间有所限制。
再者这个jre也是根据我的项目瘦身的,只是简单的抽掉一些不需要的文件而已,
不一定能适应你的项目。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2008-04-18 18:12 海边沫沫

收藏  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-19 14:20 r

非常棒 受益匪浅`````  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-19 18:56 千里冰封

其实install4j打包也非常不错,它也可以把JRE打包进去  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-20 16:24 jguangyou

相当相当的好  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-20 23:10 欧阳

虽然现在是做金融方面的J2EE但是还是很喜欢SWING的。。。
以前做过1年多SWING的东西,现在还在维护以前写的一些小SWING程序。。。
我做打包是用自己的程序实现EXE转换,然后用包装程序(加壳)实现注册。。。

看到博主大哥的文章觉得很高兴。。。

工作两年多了。现在想做的是结合J2EE和SWING还有一些国外热门的东西,做点小玩意出来。。。

希望以后看见你写更多的好文章  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-21 13:07 weiwei

我正搞了个游戏,担心发布问题,哈哈```这几天我一直都在找将jar转成exe的相关的资料,还好,今天看到了你的贴子!!!其中有个地方不明白就是你的jre是怎么瘦身的,希望能共享下你的技能哈!还有个问题就是JAVA中播放音乐的问题,是在应用程序中播放,不是在Applet中播放,能否传授个方法!!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2008-04-21 20:47 huliqing

@weiwei
呵呵,谢谢大家的支持,能对大家有帮助我也很开心。
另外关于JRE瘦身,只不过是抽掉一些没有用到的类而已。大部分抽掉的都是rt.jar
包中的东西,比如你可以用winrar打开rt.jar 然后通过winrar直接删除掉一些很明显你没有用到的类。我是通过每删除一些类之后保存一个副本,再试着运行程序。
这种方法比较考验耐性,不过两三个钟头下来,基本上可以让你的JRE瘦掉约一半。如果有更好的方法,请推荐一下,呵呵!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-21 22:35 weiwei

谢谢啦!!
能否赐教下关于JAVA播放音乐的方法,感激不尽!!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-22 02:18 huliqing

@weiwei
java中除了在Applet中播放音频之外还可以通过JavaSound API,你可以查看一下javax.sound.sampled及javax.sound.midi这两个包
另外,sun还提供了一个媒体框架——JMF, 这个媒体框架可以提供更多的音频及视频类型的支持,而且编码也更简单,不过客户端需要单独的安装JMF,可能会有一些不便。我所知道的就这些,对于Java多媒体方面我没有什么经验,呵呵。
另外,千里冰封 写过一个Java实现的MP3播放器,你可以到他的博客中看看,或跟他请教一下,他对这个应该比较有经验。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-04-23 21:18 weiwei

谢谢啦!以后还得多交流交流!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-05-23 16:03 股票baidustock

good  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-06-13 15:26 xieke

我用install4j 做的安装程序包括jre,只有3M多哦  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-09-05 09:32 DerverFox

一路看下来如醍醐灌顶,以后我也要多来关注你的文章!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-09-09 22:40 陈峰

问一下 ~~~
那个setup.exe 的制作中 要用到 整个程序目录 除了那个.exe 我有外
其他的都没有, 这样做出来的setup.exe ;
安装后提示 找不到 那个.dll 文件  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-09-09 22:44 陈峰

你能解释一下 那些文件的作用 ;
再 提供一下 下载 好吗?  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-09-10 11:18 陈峰

哥么 你到是 说句话啊!!!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2008-09-10 16:24 Huliqing

@陈峰
你是不是少了msvcr71.dll这个文件?
好像在exe4j的目录下有这个文件.
把这个文件拷贝过去就行了.  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-09-11 18:24 chenfeng

对 少了msvcr71.dll这个文件 我去网上下了个,放进去; 再做成安装文件
果然可以了; exe4j的目录下没有
ok 谢谢 博主

  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-09-25 05:52 blcai

请教博主,为什么按你的步骤,我生成的exe文件只有2M,jre没有包括进去。能不能把你的exe4j的script文件提供出来呢?谢谢。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-11-10 18:07 企业平台网

关注一下!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2008-11-11 16:21 wyning

博主,不错

快爱上你了  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-02-01 01:38 benroo

hi,你的那个下载链接好像不能用了啊?我下不了艾。。。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-02-03 23:08 huliqing

@benroo
请问,你指的是那一个下载链接呢?  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-04-30 22:40 weiyuanyong

非常不错,这两天就在找这方面的东西,谢谢,博主,  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2009-05-07 16:57 javaLover

博主,很不错。。。。不过我仍然没有想通如何将jre瘦身。我的QQ是642276106
,米我行不?想具体了解下。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-05-07 21:48 huliqing

@javaLover
你好,对于jre瘦身我也没有什么较好的方法。如果你很明确你的项目不需要那些类,那么可以用winrar一步步删除掉rt.jar里面的类,不过还是比较麻烦,又不安全。 找找网上,看有没有相关工具帮助你完成这工作吧。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-08-09 14:46 聚资库

好东西,我正好要打包一个JAR成EXE文件了,谢谢啊  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-09-23 14:51 wenball

exe放在中文路径下好像就不起作用咯  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2009-10-14 15:19 lee

他妈的。教程有水份。不能成功把jre打包进exe。试了n遍了就是不能打进去。
教程的第一张图就显示了这教程是有水份的。JLoading.jar 268 (268肯定是jar包的大小了。) MyLoading.exe 266(266 肯定是exe的大小了) 此为教程的第一疑点,要说我是乱说的。请看第二疑点。“现在我们使用Inno Setup进行压缩并制作一个安装包。”这句话的下边左图(如果图在我发现疑点后不给换了),也就是MyLoading.exe打包成功所显示的图。鼠标点在哪?点在MyLoading.exe文件上,再看任务栏的信息,创建日期200..后面是不是有266kb?这就是真正的MyLoading.exe文件的大小,并不是作者所说的40mb的大小。右图是张假图。此作者真爱忽悠人。害我浪费那么多的时间。刚开始还蛮赞赏作者的奉献精神。没想到居然“奉献”假的教程忽悠人。真是可恶,可耻!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-10-14 16:20 huliqing

@lee
看到你的回复,确实让人郁闷。
我想你应该是“聪明”反被“聪明”误。
如果你花了很多时间仍不成功,那么你应该研究更基础一点的。
上面你提的两个疑点都不是疑点,至于你为什么会研究到这么奇异的地方我也是挺纳闷的。
另外,写技术类文章的人,很可能存在错误或错漏,但绝对不会抱着忽悠人的心理。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-10-20 17:31 日月雨林@gmail.com

@lee
你的RP有问题!我按照博主的教程 就成功的打包了自己的软件。而且到处都能运行。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-10-20 17:32 日月雨林@gmail.com

@huliqing
不要理会那些无聊的人!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-10-30 16:35 笨笨咖啡

你好,想请问一下,我有几个dll文件,在工程里面是放在System32下面的。现在要打包的话,要把这几个文件直接打包到exe里面,那是可以直接把dll文件拷贝到要打包的文件里面吗? 那样会不会文件路劲不对呀?谢谢!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-11-22 20:49 lake

请教楼主:
我把我的jre瘦身了 然后我也确定它可以让我的程序运行
可是我按照你的文章的指示指定jre的路径的时候
生成的可执行文件运行不了
警告消息是:Couldn't load main class
然后我尝试把路径改为JDK里面的jRE的路径 生成的EXE可以运行
所以说是我自己瘦身后的jre的问题 可是它明明可以让我的程序运行
现在不晓得该怎么改 不晓得该往jre里面加什么东西!
如果有时间 又知道原因
请不吝赐教 万分感激  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-11-27 14:18 keating

不知道楼主的exe4j是什么版本的?我在官方网站下载了一个exe4j,然后找了一个msvcr71.dll放在MyLoading目录下,生成的exe仍然没有将jar和jre包括进去。请楼主指点。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2009-12-01 18:11 keating

@keating
同志们,注意这里,打包jre的是inno setup,不是exe4j !!!!!!!!!!!!!  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2010-01-04 11:34 help

一个项目中应用到很多图片怎么导入?  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2010-04-03 11:11 tim

可以没有找到exe4j4.3.1 的注册机会  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2010-07-20 21:40 xiao

@lee
麻烦你,做事自己仔细点,不要去污蔑作者,JRE不是打到EXE里去的

  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2010-09-08 13:49 jacinta

根据步骤操作,不行噢,
java.lang.ClassNotFoundException: web.MenuFrame
找到有main方法的类
可否请楼主看看噢?  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2010-10-18 15:59 tomcat

非常有用啊。。。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2010-10-18 18:56 huliqing

@tomcat
:)  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2011-07-25 14:24 如果你是我的传说

感谢楼主了~~  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2011-09-04 12:35 gufengyy

楼主写的文章非常不错,学到了不少实用的东西,谢谢。如果有人致疑,还是请自己多检查自己的程序和操作步骤吧。  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2011-09-14 14:26 amy

我安装成功了但是在开始菜单中不显示卸载程序的命令操作,怎么回事呢,而且我打开后,不能退出,只能在任务管理器删除进程  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞[未登录] 2011-09-14 14:28 amy

请问楼主这是怎么回事啊  回复  更多评论   

# 关于jre瘦身 2012-11-26 15:23 dazuo78

大家可以参考http://www.oracle.com/technetwork/java/javase/jre-7-readme-430162.html
中的 Redistribution of the Java SE Runtime Environment (JRE)
一节
讲到哪些是可选的,哪些是必选的  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2013-05-22 19:54 szong

为什么我打包下来的exe只有1M不到,你打包的40多M  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2013-12-22 20:25 sz

为什么我打包好的exe在别人的电脑上不能运行呢,jre是放进去的,而且我还设置特意设置了个path.bat的批处理文件  回复  更多评论   

# re: 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞 2015-03-18 14:54 zhaowweny

@xieke
你怎么做到的?绑定了jre?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

文章原创,欢迎转载
——转载请注明出处及原文链接

随笔分类(60)

随笔档案(33)

最新评论

评论排行榜