此篇文档主要讲述了如何使用Inno Setup制作安装包,如果要打包的内容已经准备好,可以跳过“QT操作”部分。
QT操作
1.在QT中将编译模式设置成Release,点击编译后在文件夹中找到生成exe文件,并将其复制出来单独放到一个文件夹中。
2.考虑到用户可能将软件安装到Program Files (x86)等系统文件夹中,此时如果程序没有管理员权限会出现一些问题,因此可以给编译出的exe添加管理员权限。在工程文件夹中,pro文件的同目录下创建一个.manifest文件,这里笔者用getAdmin.manifest举例。向getAdmin.manifest中写入下列代码。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
然后找到与工程编译出的exe文件同名的.rc文件,向其中添加下列代码。
1.1 24 DISCARDABLE "getAdmin.manifest"
如果没有找到.rc文件,可以自己创建一个,这里笔者使用getAdmin.rc举例。向创建的getAdmin.rc文件中写入上述代码,然后在QT中打开pro文件添加下列语句。
2.RC_FILE += getAdmin.rc
以管理员身份运行重新运行QT点击编译,如果此时编译出的exe文件图标的右下角有小盾牌标志,则代表管理员权限添加成功。
3.通过搜索找到QT 5.14.2(MinGW),版本根据QT工程的编译器选择,如果是32-bit的编译器,那么MinGW就使用32位版本。如果QT工程使用的是MSVC编译器,这里也选择同版本的MSVC编译器。
4.打开后,输入"cd exe文件的路径"来使该工具找到exe文件存储位置。然后输入"windeployqt 文件名称.exe",该工具会自动添加此exe文件需要的.dall文件。但是该工具添加的.dall文件不一定齐全,所以.dall文件自动添加完毕后,手动点击exe文件,如果报错,则根据提示信息,在QT安装文件夹找到对应的dall文件并手动添加。直到点击exe后能正常打开使用。
Inno Setup操作
1.打开Inno Setup后,选择使用向导,根据提示创建一个脚本模板。
2.点下一步,填写程序信息。
3.点击浏览,选择之前准备好的exe文件。点击添加文件,把exe文件同一目录下的其它文件全部添加。点击添加文件夹,把exe文件目录下的其它文件夹全部添加。完成后点击下一步。
4.根据需求选择创建快捷方式,完成点下一步。
5.许可文件不是必要的,点击浏览可添加安装前和安装后显示信息文件,安装前显示信息文件通常为用户协议。支持txt和rtf文件格式,添加完成后点击下一步。
6.语言选择中文。
7.选择编译出的安装包的保存位置、名称和图标,安装密码可以不用设置。
8.勾选"是,使用#define编译指令",点击下一步完成模板创建。此时会弹出一个提示框询问“是否立即开始编译”,点击否。
9.对模板生成的添加文件夹的代码进行修改。向导生成的模板代码,会把文件夹中的文件复制到exe同一目录下,并删除原本的文件夹,这会导致安装后的exe文件报错。将代码修改成如下格式,点击编译即可得到一个最简单的安装包。
1.Source: "C:\Users\21195\Desktop\11\platforms\*"; DestDir: "{app}\platforms"; Flags: ignoreversion recursesubdirs createallsubdirs
2.Source: "C:\Users\21195\Desktop\11\iconengines\*"; DestDir: "{app}\iconengines"; Flags: ignoreversion recursesubdirs createallsubdirs
10.在wpInfoBefore页面,即“显示安装前文件”的那个页面,添加一个复选框。复选框显容为“笔者已阅读,并同意该协议”,并将该页面的 “下一步”按钮默认设置为不可用。只有用户勾选复选框,表示同意协议,才能点击下一步继续安装,代码如下。
1. var
2. AgreementCheckBox: TNewCheckBox;
3. procedure AgreementCheckBoxClick(Sender: TObject);
4. begin
5. // 更新下一步按钮的状态
6. WizardForm.NextButton.Enabled := AgreementCheckBox.Checked;
7. end;
8. procedure InitializeWizard;
9. begin
10. // 创建一个复选框控件
11.
12. AgreementCheckBox := TNewCheckBox.Create(WizardForm);
13. AgreementCheckBox.Parent := WizardForm.InfoBeforePage;
14. AgreementCheckBox.Left := WizardForm.InfoBeforePage.Left + ScaleX(0);
15. AgreementCheckBox.Top := WizardForm.InfoBeforePage.Height - ScaleY(22);
16. AgreementCheckBox.Width := WizardForm.InfoBeforePage.ClientWidth - Scale X(16);
17. AgreementCheckBox.Caption := '笔者已阅读,并同意该协议';
18. AgreementCheckBox.Checked := False;
19. AgreementCheckBox.OnClick := @AgreementCheckBoxClick;
20.
21. end;
22. procedure CurPageChanged(CurPageID: Integer);
23. begin
24. // 在InfoBeforePage页面时禁用下一步按钮
25. if CurPageID = wpInfoBefore then
26. WizardForm.NextButton.Enabled := False;
27. end;
11.为了避免安装时因权限不足发出发生错误,可以给安装包添加管理员权限。在脚本的[Setup]节点添加 PrivilegesRequired=admin。进入Inno Setup安装根目录,找到文件SetupLdr.e32,这是一个二进制配置文件,需要用到ResHacker.exe这个工具修改。找到
其他文章阅读推荐:
《革新而来!强适应性串口服务器,RJ45与串口双向互转+多通信机制》
《高性能低延迟4G CAT1模块,4G全网通+高精度定位》
《LoRa微型DTU,颠覆设计!无线数传电台体积竟能如此小》
《三种低功耗模式,多路Socket,超低功耗无线串口Wi-Fi模块》
立即咨询: 13716188458 / 18588225959,助您抢占市场先机。项目经理在线