制作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
制作Java桌面程序的一键安装包的更多相关文章
- 使用InstallAnywhere7.1制作Java exe程序安装包
[转[使用InstallAnywhere7.1制作Java exe程序安装包 使用InstallAnywhere7.1制作Java exe程序安装包 对于已经完成的Java应用程序开发项目,从商业化角 ...
- lnmp、lamp、lnmpa一键安装包(Updated: 2015-10-25)
lnmp.lamp.lnmpa一键安装包(Updated: 2015-10-25) 2014-12-26 Posted by yeho 这个脚本是使用shell编写,为了快速在生产环境上部署lnmp/ ...
- (实例篇)LNMP 1.4一键安装包,安装教程
http://mp.weixin.qq.com/s/l6ijKBwD6tt8jkZytWEIsw https://lnmp.org/download.html 2017-09-11 学习与分享 PHP ...
- lnmp、lamp、lnmpa一键安装包(Updated: 2016-4-12)
lnmp.lamp.lnmpa一键安装包(Updated: 2016-4-12) 文章目录 脚本特性 安装步骤 如何添加虚拟主机? 如何删除虚拟主机? 如何管理ftp账号? 数据备份 如何管理服务 ...
- LNMP-Linux下Nginx+MySQL+PHP+phpMyAdmin+eAcelerator一键安装包
LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat.Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx.MySQL.PHP.phpMyA ...
- LNMP安装一键安装包
系统需求: CentOS/Debian/Ubuntu Linux系统 需要2GB以上硬盘剩余空间 128M以上内存,OpenVZ的建议192MB以上(小内存请勿使用64位系统) VPS或服务器必须已经 ...
- vmware workstation11+centos7+lnmp一键安装包 环境搭建
vmware workstation11 1.下载:http://pan.baidu.com/s/1gecipOJ 2.安装:直接下一步. centos7 1.下载:网易镜像 http://mirro ...
- CentOS下Web服务器环境搭建LNMP一键安装包
CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...
- 常用PHP运行环境一键安装包
PHP的程序很火,像博客:Wordpress.论坛:Discuz!.SNS:UCenter Home.CMS:DedeCMS等等都是比较流行的PHP程序,大家都在使用PHP类的程序,但对于很多初学者来 ...
随机推荐
- Java基础之(一)——从synchronized优化看Java锁概念
一.悲观锁和乐观锁概念 悲观锁和乐观锁是一种广义的锁概念,Java中没有哪个Lock实现类就叫PessimisticLock或OptimisticLock,而是在数据并发情况下的两种不同处理策略. 针 ...
- Linux下的SSH,你知道多少?
Openssh介绍 OpenSSH 是 SSH (Secure Shell) 协议的免费开源实现.SSH协议族可以用来进行远程控制, 或在计算机之间传送文件.而实现此功能的传统方式,如telnet(终 ...
- keycloak~OIDC&OAuth2&自定义皮肤
1 OpenID & OAuth2 & SAML 1.1 相关资料 https://github.com/keycloak/keycloak https://www.keycloak. ...
- LeSS 的诞生(一):大规模团队该何去何从
<敏捷宣言>发布后,"敏捷"被越来越多的小型开发团队认可.与此同时,另一个问题也逐渐暴露了出来:以 Scrum 为首的敏捷方法论对那些大规模的开发团队并不友好. 基于此 ...
- 企业管理CRM不只是客户录入系统
企业在举办营销活动或者展会之后,将会收集到大量的客户信息,将这些信息有效地整理.完善.储存也是一个不小的工程.如果您的企业经常面遇到这样的情况,不妨使用Zoho CRM系统来帮您完成.但是,Zoho ...
- SpringBoot | 1.3 约定编程Spring AOP
前言 前面聊过Spring的一个很重要的概念,IoC控制反转,接下来就是AOP了: 1. AOP切面编程 面向切面编程,是利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度 ...
- ESP32音频输入-MAX4466,MAX9814,SPH0645LM4H,INMP441(翻译)
有几种方法可以将模拟音频数据输入到ESP32中. 直接从内置的模数转换器(ADC)读取 这对于一次性读取很有用,但不适用于高采样率. 使用I2S通过DMA读取内置ADC 适用于模拟麦克风,例如MAX4 ...
- OpenResty简介
OpenResty(也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过揉和众多设计良好的 ...
- F5节点分配查看
查看F5将服务分配到那个节点上了. 第一步: ssh登陆信息和密码 用户名:root 密码:123@.com 第二步: 查看客户端的那个设备连接到F5之后被分配到那个节点上的语句 ssh name: ...
- 前端-js基础
HTML三把利剑之一,浏览器具有解析js的能力 一.js基础 在HTML中可以将JavaScript/JS的代码写在head中,被script标签所包裹,当浏览器解释HTML时,遇到style标签时, ...