专业的编程技术博客社区

网站首页 > 博客文章 正文

如何使用Inno Setup制作安装包?(inner setup)

baijin 2024-09-08 01:54:34 博客文章 22 ℃ 0 评论

此篇文档主要讲述了如何使用Inno Setup制作安装包,如果要打包的内容已经准备好,可以跳过“QT操作”部分。

QT操作

1.在QT中将编译模式设置成Release,点击编译后在文件夹中找到生成exe文件,并将其复制出来单独放到一个文件夹中。

2.考虑到用户可能将软件安装到Program Files (x86)等系统文件夹中,此时如果程序没有管理员权限会出现一些问题,因此可以给编译出的exe添加管理员权限。在工程文件夹中,pro文件的同目录下创建一个.manifest文件,这里笔者用getAdmin.manifest举例。向getAdmin.manifest中写入下列代码。

1. <?xml version='1.0' encoding='UTF-8' standalone='yes'?>

2.<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>

3. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">

4. <security>

5. <requestedPrivileges>

6. <requestedExecutionLevel level='requireAdministrator' uiAccess='false' />

7. </requestedPrivileges>

8. </security>

9. </trustInfo>

10.</assembly>

然后找到与工程编译出的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这个工具修改。找到<requestedExecutionLevel level="asInvoker" uiAccess="false"/></requestedPrivileges>,修改为<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/></requestedPrivileges>,如下图所示。重新编译后若安装包右下角出现小盾牌,则管理员权限添加成功。


其他文章阅读推荐:

《革新而来!强适应性串口服务器,RJ45与串口双向互转+多通信机制》

《高性能低延迟4G CAT1模块,4G全网通+高精度定位》

《LoRa微型DTU,颠覆设计!无线数传电台体积竟能如此小》

《三种低功耗模式,多路Socket,超低功耗无线串口Wi-Fi模块》

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表