如果您喜欢这些文章,欢迎点击此处订阅本Blog

<script type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

标 题: 一键安装双击运行——Java安装程序制作
作 者: Jason Du
时 间: 2009-3-23
原 文: http://www.blogjava.net/javapro/archive/2009/03/24/JavaAppSetup.html

  对于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篇
http://www.blogjava.net/gdws/archive/2006/12/25/89898.html

如何制作最小的RCP程序压缩包(包含JRE)
http://www.eclipseworld.org/bbs/read-cec-tid-5777.html

让Java程序带上精简的jre(附工具)
http://glemir.xplore.cn/archives/200

JRE极限精简探求手册[1]——精简一个Swing的即时战略游戏
http://cping1982.blog.51cto.com/601635/129630

Java应用——精简JRE体积的小工具
http://blog.csdn.net/cping1982/archive/2008/09/02/2865198.aspx

JVM rt.jar 精简工具图形外壳 0.1
http://www.blogjava.net/beansoft/archive/2008/12/19/247321.html

可以运行 RCP/Swing 的迷你JRE 6(3.75MB)
http://www.blogjava.net/beansoft/archive/2008/01/18/176353.html

可以运行SWT的精简版JRE 1.4.2_04, 压缩后仅1.3MB
http://www.blogjava.net/beansoft/archive/2007/03/07/102381.html

  总得来说JRE精简是一个比较复杂的工作,如果不清楚某部分的功能不要轻易进行删减,否则可能产生一些未知的错误。pack200压缩工具在对某些重新打包过的rt.jar文件压缩时会产生错误,如果使用的话一定要注意控制台的输出信息。

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

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


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

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

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

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


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

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


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

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


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


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

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

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


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


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

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

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

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

然后执行该脚本即可:

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

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

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

<script type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

<script type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

<script src="http://www.google.com/reader/ui/publisher.js" type="text/javascript"></script> <script src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&callback=GRC_p(%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D)%3Bnew%20GRC" type="text/javascript"></script>

评论

精简JRE这块不错,不过如果有工作来直接程序运行所有过程中所用到的jar全部提取并精简化那就更好。不过好像有协议约束,不允许JDK删减。

2009-03-24 14:40 | witbrave

@witbrave
GreenJVM可以实现这个功能,但是不能很好的实现,一般都要自己手动修正需要的class
http://blog.csdn.net/cping1982/archive/2008/09/02/2865198.aspx
http://www.blogjava.net/beansoft/archive/2008/12/19/247321.html

一键安装,双击运行——Java安装程序制作相关推荐

  1. java程序打包成exe:一键安装双击运行——Java脱离jre安装程序制作

    转载的,时间是2012年  所以时间可能有点久  不过  还是可以学到很多东西 对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户端是否安装有jre.jre版本.jre在哪里下载.如何用j ...

  2. 无法安装或运行此应用程序。该应用程序要求首先在全局程序集缓存(GAC)中安装程序集

    问题:winform程序发布后,在其它电脑上安装时,弹出"无法安装或运行此应用程序.该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集" 解决(可能) ...

  3. 无法安装或运行此应用程序。该应用程序要求首先在“全局程序集缓存(GAC)中安装程序集MySQL版本6.7.4”

    1. Problem 无法安装或运行此应用程序.该应用程序要求首先在"全局程序集缓存(GAC)中安装程序集MySQL Data版本6.7.4" 2. Analysis and So ...

  4. 无法安装或运行此应用程序。该应用程序要求首先在“全局程序集缓存(GAC)”中安装程序集stdole版本7.0.3300.0...

    无法安装或运行此应用程序.该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集stdole版本7.0.3300.0 2011年12月21日 windows系统中目录 win ...

  5. docker 运行java程序_Docker:在容器中运行Java应用程序

    您可以使用Docker在特定的运行时环境中运行容器中的Java应用程序.本教程介绍如何创建Dockerfile,以便在OpenJDK 8的容器中运行简单的Java应用程序. 示例应用程序由一个Main ...

  6. java斗地主程序制作过程

    java斗地主程序制作过程 效果 项目概况 代码分布 效果 项目概况 代码分布 首先对卡牌进行编写 package com;import java.awt.Point; import java.awt ...

  7. 不安装JRE运行JavaApplet小程序

    研究实现过程: 在A电脑上把安装jre前和安装jre后的注册表分别导出,用TextDiff文本比较器比较安装后注册表增加的注册表项,将新增的项保存为addRegedit.reg.把A电脑上安装jre前 ...

  8. 安装IDEA运行Java保姆级教程(java小白入门必备)

    本文旨在为Java入门的同学介绍如何在自己电脑上运行Java程序: 一 下载IDEA安装包 https://www.jetbrains.com/idea/download/#section=windo ...

  9. HBuilder X下载安装,运行微信小程序教程(官网)

    HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE. [1] HBuilder的编写用到了Java.C.Web和Ruby.HBuilder本身主体是由Java编写. ...

最新文章

  1. OSChina 周一乱弹 —— 深入浅出讲技术
  2. 为什么要选择Apache Pulsar(二)
  3. 学java什么书好?推荐几本Java开发的书
  4. Spring Boot整合MyBatis连接Oracle数据库
  5. Word如何添加楷体_GB2312
  6. 关于PredicateT委托
  7. 【大话Mysql面试】-Mysql常见面试题目
  8. AUTO CAD快捷键常见命令
  9. 互联网企业该如何进行风险管理
  10. matlab-线性代数 根据方程组写出系数矩阵与增广矩阵
  11. 淘宝用户行为数据分析
  12. 2018版USBASP烧录器改通用版教程
  13. html设置label的字体大小,swift - label 的font 设置 文字字体和大小
  14. 如何设置文件的默认打开方式
  15. 最实用的网页设计素材打包下载[15G]
  16. 苹果开发者账号和邓白氏编码申请总结
  17. 什么是mysql节点_什么是MySQL集群
  18. 华云数据出席2021信创发展论坛:喜获信创双项殊荣 发布业内首个《信创云基座白皮书》
  19. matlab代码规范(自用)
  20. 韩钰带你走进电商世界之淘宝网店卖家快捷短语大全!

热门文章

  1. 初次使用Ubuntu18.04遇到的问题——笔记1(删除软件+Ubuntu换源+Ubuntu安装好用截图工具+Ubuntu安装wps+win+Linux双系统的电脑Linux挂载硬盘时无法写入问题)
  2. 这大概是“毕业”式裁员的祖宗?
  3. Excel-根据身份证号自动生成出生日期
  4. DigestUtils加密工具类
  5. Andrino笔记(一):准备工作+认识Andrino
  6. 流体力学—作用在流体上的力
  7. Softethervpn去除开源版本的企业限制
  8. 什么是回归商业的本质
  9. 【区块链技术开发】ganache-cli指令与Windows10桌面版的ganache区别
  10. 第二章 RNA-seq一般分析流程全套