又是一个无聊的周末,硬着头皮给客户想出一套java程序打包的解决方案 【转】
目标:有安装程序包像安装qq一样简单一直下一步即可 ,可卸载,要求程序自动启动,不需要单独安装JRE,就在写这套解决方案的时候,我真是百般痛恨微软.哎无奈啊.幸好最终还是被我想出来了,分享下吧,好久不写博了.
第一步 jre减肥,删除jre/lib/rt.jar中不使用的类,删除charsets.jar中不使用的字符集编码.MyWork开源项目(http://mywork.sourceforge.net/)中带了一个瘦身过的JRE6.0,非常小只有几M.如果有需要可在此基础上适当的增肥,例如提示有类找不到,只要在完整的jre下rt.jar包中找到这个类所在的包添加到瘦身过的jre即可.
第二步 使用pack200进行压缩,压缩效果非常惊人,具体用法可参考官方手册,下面是最简单的压缩和解压缩命令(如果要制作安装包的话不建议压缩,因为不方便解压缩,还需要另外写程序进行解压)
压缩命令D:/xxxxx/pack200 rt.jar.pack.gz rt.jar
解压缩命令unpack200 -r jre/lib/rt.jar.pack jre/lib/rt.jar
第三步 将自己的程序打成jar包,注意指定主类,连同依赖的jar包一同放到jre/lib/ext下面,(当然也可以不怎么干,通过写批处理指定CLASSPATH)直接放到ext下面的好处在下面会体现出来
第四步 在jre文件夹的上层目录下面编写启动批处理%1的作用下面在说
@SET PATH=./jre/bin;%1;%PATH%;
@start javaw com.Main(根据实际情况修改为自己的程序入口)
将本地的jre或jdk文件夹重命名,并在cmd下敲java以确认本机的jre已经失效,点击批处理,测试如果程序正常启动的话,继续往下看,如果程序无法启动,将@start javaw com.Main改写为java com.Main重新启动调试下,看看是不是缺类.
第五步 将批处理编译成exe程序,使用Quick Batch File Compiler工具(http://www.abyssmedia.com/download.shtml),程序使用起来非常简单这里就不在介绍了,E文不好的可以去汉化新世纪下载中文的,注意如果要制作成安装包必须使用幽灵模式,不可以使用控制台模式.
第六步 制作安装包使用InnoSetup工具(百度一下到处都有下载),此工具有使用向导,这部分就不介绍了,向导结束后,会提示生成脚本,保存此脚本并生成exe安装包,运行安装包,如果生成出来的文件程序结构和第四步是一样的,并且可以运行的话,安装包制作完成.(这一步选择程序文件时批处理exe和jre一同加进来注意jre必须是没有进行pack2000压缩的,否则需要在安装脚本里面另写解压程序)
第七步 随windows自动启动程序,修改安装脚本添加如下代码
[Registry]
Root: HKLM; Subkey: "SOFTWARE/Microsoft/Windows/CurrentVersion/Run"; ValueType: string; ValueName: "程序名"; ValueData: """{app}/主程序.exe"" ""{app}/jre/bin"""
这里面就用到了%1 熟悉批处理的同学都知道系统自启动的时候.代表的并不是程序的所在文件夹,所以这里传递了jre所在文件夹参数,@SET PATH=./jre/bin;%1;%PATH%;中把jre添加到了path中.
第八步注销下重新登录看看程序是否自动启动了.(可以在没有安装jre的机器上测试下)
我的安装包大小为10M左右,我依赖了很多第三方的jar包,否则还可以更小,最后还可以加个壳或使用rar压缩下
分享到:
相关推荐
【标题】"setup_with_jre" 是一个与安装程序相关的主题,它暗示着这是一个包含Java运行环境(JRE)的安装包。在IT领域,尤其是软件部署和分发时,"setup"通常指的是安装程序,它负责将软件的各个组成部分复制到用户...
2. **运行安装程序**:双击下载的.exe文件启动安装向导。 3. **接受许可协议**:阅读并接受Oracle的软件许可协议。 4. **选择安装路径**:你可以选择默认的安装路径,也可以自定义到其他位置。 5. **配置环境变量**...
1. **下载与安装**:首先,你需要下载`jadx-gui-1.4.4-with-jre-win.zip`文件,这是`JadxGUI`预打包的Windows版本,包含运行所需的Java运行环境。解压缩后,运行`jadx-gui.bat`启动程序。 2. **加载APK文件**:在`...
"Build"页签是编译设置,记得取消勾选"with VM",否则会导致JRE被一同打包。特别需要注意的是,"Pre-Install"的配置,例如在天域恒信陵园管理系统安装版中,可以设置安装提示,确保用户在安装前关闭其他程序,并展示...
在压缩包中,"jdk1.7-32位免安装"文件应该是包含了JDK1.7的所有组件,包括Java虚拟机(JVM)、Java运行时环境(JRE)以及各种开发工具,如`javac`编译器、`javadoc`文档生成工具、`jar`打包工具等。用户只需解压到...
它包含了编译器、调试器、Java运行时环境(JRE)以及其他工具,使得开发者能够编写、测试和运行Java程序。JDK 1.7引入了一些关键的新特性,如Try-with-resources语句,用于自动关闭资源;多 Catch块,允许一个异常...
2. **安装Eclipse**:解压下载的Eclipse压缩包到你希望的位置,然后双击运行`eclipse.exe`启动。Eclipse是一个便携式应用,无需额外安装步骤。 3. **配置Eclipse环境变量**:为了让Eclipse识别JDK,需要在Eclipse的...
JDK包含了Java编译器(javac)、Java虚拟机(JVM)、Java运行时环境(JRE)以及各种开发工具,如Java文档生成器(javadoc)、Java打包工具(jar)等。这些工具使得开发者能够编写、编译、调试和运行Java程序。 在...
程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...
Jre64 是 64 位 Java 运行环境;Lib 是 IntelliJ IDEA 依赖的类库;License 包含插件许可;Plugin 是插件启动配置目录。 在首次启动 IntelliJ IDEA 后,用户将看到如外观和行为(Appearance & Behavior)、编辑器...