inno setup是比较简单好用的一款打包工具。
下面以打包HelloWorld.exe为例进行说明。
一、打包目录的建立
- 创建source目录:用于放置主程序、依赖dll、资源等待打包文件。
- 创建output目录:用于存放生成的安装包。
- HelloWorld.iss:使用inno setup向导生成的打包脚本。
如下所示:
进行打包时,只需要编译HelloWorld.iss,就可以了。
二、修改脚本
使用向导生成的脚本HelloWorld.iss,内容如下:
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Hello World App"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "HelloWorld.exe"
[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{9AE31757-84AA-4D2F-9CB3-AF1CB2DB0AF4}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=D:\test\output
OutputBaseFilename=mysetup
Compression=lzma
SolidCompression=yes
WizardStyle=modern
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "D:\test\source\HelloWorld.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
一般情况下,脚本不修改,也可以,只是有一些不足的地方。
我们也可以进行部分修改,然后定制一些功能。
1、绝对路径改为相对路径
如果我们的打包脚本需要进行提交上库的话,使用绝对路径,由于大家本地路径不一致,所以,这个脚本会被反复修改,很麻烦。使用相对路径来解决这个问题。
输出目录
OutputDir=D:\test\output
修改为:
OutputDir=output
输入目录
[Files]
Source: "D:\test\source\HelloWorld.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\source\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
修改为:
[Files]
Source: "source\HelloWorld.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "source\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "source\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
2、开始菜单中建立文件夹
默认是没有放在文件夹中的,如下:
我们在[Setup]下添加如下一行,表示文件夹名称为"Hello World App"
DefaultGroupName={#MyAppName}
并在[Icons]下添加如下一行,表示在"Hello World App"文件夹下创建一个名为Hello World App的快捷方式,它指向的文件为Filename中指定的HelloWorld.exe,其工作目录为{app}指向的应用程序安装目录
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir:"{app}"
修改后的脚本:
重新编译,安装后效果,如下:
3、修改为默认创建桌面快捷方式
安装过程中,默认是不勾选创建快捷方式的,如下:
若需要默认就勾选。那么修改[Tasks]下,Flags的值。
Flags值
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
修改为:
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkablealone
重新编译,安装时默认勾上,如下:
4、添加卸载菜单
在[Icons]下添加如下一行
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
修改后的脚本:
重新编译,安装后效果,如下:
若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!
同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。
本文涉及测试用脚本及文件,公众号回复:InnoSetup打包测试脚本,即可下载。