打包exe并设置管理员权限
- 前言
- 打包可执行文件exe
- 准备jre环境
- 运行exe4j并配置
- 设置执行文件exe管理员权限
- 设置打包工具管理员权限
- 打包exe安装包
- 创建脚本
- 打包
前言
准备安装包:
- jar包:自己的程序;
- exe4j:将jar打包可执行的exe;
- Inno Setup 5:将exe和jre环境打包成按转包exe文件;
- resource_hacker:设置文件具备管理员权限。
安装包下载地址
exe4j下载(密码 a3gc)
Inno Setup 5下载(密码 4wve)
resource_hacker下载
下载完,直接下一步安装即可。
打包可执行文件exe
准备jre环境
首先,因为jar包要依赖环境JDK,所以要准备好jre环境,可以下载,也可以去安装好的java环境目录里拷贝一个。
运行exe4j并配置
注册一下,避免最后打包完,总是弹框提醒,如果能忍受也可不注册,不影响打包。
注册码:`L-g782dn2d-1f1yqxx1rv1sqd``
注册完直接下一步
下一步
下一步
这步需要给exe起名字,根据自己软件的性质,还需要给包设置一个小图标,格式要求.ico格式
当前页面继续点击
next
下一步
下一步
后边继续下一步即可,不用改动。
最终结果
设置执行文件exe管理员权限
为什么要设置这个呢,如果不设置,我们的安装包最后默认是安装到c盘的,如果不设置管理员权限,那么当软件写配置文件或者输出日志的时候就会报错,没有权限创建文件并写入。
将 asInvoker 改成 requireAdministrator
设置打包工具管理员权限
设置Inno Setup 5打安装包工具的打包权限,同样设置管理员权限,目的是,如果不设置这个权限,每次安装完,直接点击完成启动软件会报错,后边直接点击图标启动就没问题了,虽然问题很小,但是尽可能完美一点。
每次改完都会在相同位置生成一个original文件,这个相当于对之前未修改文件的一个备份,可以删掉,也可以留着。
打包exe安装包
创建脚本
默认是没有脚本的,第一次需要自己创建,也可参考下边的脚本,改一改直接用。
脚本
内容
; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
#define MyAppName "数据处理"
#define MyAppVersion "0.0.1"
#define MyAppPublisher "xxx科技有限公司"
#define MyAppURL "www.baidu.com"
#define MyAppExeName "数据处理.exe"
[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{4B3D5B77-2288-46C5-AA01-B60955B1AE65}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\simutool
DisableProgramGroupPage=yes
OutputDir=C:\Users\THINKPAD\Desktop\package_exe\end
OutputBaseFilename=数据处理
SetupIconFile=C:\Users\THINKPAD\Desktop\package_exe\tool.ico
Compression=lzma
SolidCompression=yes
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
[Files]
Source: "C:\Users\THINKPAD\Desktop\package_exe\max\数据处理.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Users\THINKPAD\Desktop\package_exe\max\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
[Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
; 注: 下边这一行让安装的时候自动生成快捷方式
Name: "{userdesktop}\{#MyAppName}";Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}"
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
注: AppId的值为单独标识该应用程序。
不要为其他安装程序使用相同的AppId值。
(生成新的GUID,点击 工具|在IDE中生成GUID,就是{{ }这样,并没有少一个或者多一个大括号。)
GUID一样的话,如果安装的软件不是通过卸载方式移除软件,比如通过直接删除安装目录方式移除,那么下次安装就不会有选择安装目录的安装步骤,会直接安装到上次选中的盘符,而且很多脚本信息里改了,真实安装却还保持之前的信息。
所以,如果想保持安装步骤和信息的完整性,要么正常卸载再安装,要么每次打包都换GUID。
下边看下我的目录,以方便对比自己设置
打包
上边的都设置好了,开始打包
等待打包完成即可。
如果你是用的javafx开发,设置软件的默认任务栏图标,可以这样