赞
踩
在准备好程序的目录结构之后,接下来的任务就是要创建安装程序,这通常有很多好处:
压缩软件的大小;
简化软件的安装过程;
提供亲切、友好的操作界面;
保护软件的完整性,避免被盗版、破解或植入病毒。
那么,如何通过 Qt IFW 创建安装程序呢?一起来看看吧!
1 创建包目录
打包的第一步,先要创建一个类似于下面这样的包目录
(必须包含 config 和 packages 子目录),以反映安装程序的设计并允许将来扩展:
如果不想手动创建,有一个简单的办法:从 Qt IFW 安装目录下的 examples 里复制一份,然后在该基础上进行修改。
2 创建配置文件
为了自定义安装程序的 UI 和行为,我们需要创建一个配置文件,该文件通常被命名为 config.xml,位于 config 目录中。
配置文件由根元素 <Installer> 组成,并且必须包含子元素 <Name> 和 <Version> 。但是其他子元素是可选的,而且可以以任意顺序出现。
来看一个典型的配置文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <Installer>
- <Name>MyApp</Name>
- <Version>1.0.0</Version>
- <Title>MyApp Installer</Title>
- <Publisher>Waleon</Publisher>
- <StartMenuDir>IFW Examples</StartMenuDir>
- <TargetDir>@ApplicationsDir@/MyApp</TargetDir>
- </Installer>
其中,各个元素的含义如下所示:
元素 | 描述 |
---|---|
<Title> | 标题栏上的安装程序名称 |
<Name> | 被添加到页面名称和简介文本中的应用程序名称 |
<Version> | 程序的版本号 |
<Publisher> | 软件的发布者(如 Windows 控制面板中所示) |
<StartMenuDir> | Windows 开始菜单中产品的默认程序组名称 |
<TargetDir> | 程序安装的目标路径 |
最终,这些信息将被显示在介绍页面上:
有关配置文件的格式和可用元素的更多信息,请参见 Configuration File(https://doc.qt.io/qtinstallerframework/ifw-globalconfig.html)。
3 创建包信息文件
对于我们来说,安装程序只处理一个组件 - com.waleon.ifw。要向安装程序提供有关组件的信息,需要创建一个名为 package.xml 的文件,并将其放在 meta 目录中。
以下是我们为组件提供的一些信息:
- <?xml version="1.0" encoding="UTF-8"?>
- <Package>
- <DisplayName>MyApp</DisplayName>
- <Description>The first ifw installer.</Description>
- <Version>1.0.0-1</Version>
- <ReleaseDate>2019-10-12</ReleaseDate>
- <Default>true</Default>
- <Script>installscript.qs</Script>
- </Package>
其中,各个元素的含义如下所示:
元素 | 描述 |
---|---|
<DisplayName> | 组件的名称 |
<Description> | 组件的描述信息 |
<Version | 组件的版本号(当有可用的版本时,用于推广更新) |
<ReleaseDate> | 组件的发布日期 |
<Default> | 如果在安装程序中预先选择了组件,则为 true。 |
<Script> | JavaScript 文件名,用于在加载时执行一些安装操作。 |
最终,这些信息将被显示在组件页面上:
有关包信息文件的更多信息,请参见 Package Information File Syntax(https://doc.qt.io/qtinstallerframework/ifw-component-description.html#package-information-file-syntax)。
4 添加到开始菜单
如果要添加开始菜单快捷方式,则需要用到(由上述 <Script> 元素指定的)脚本文件 - installscript.qs:
- function Component()
- {
- // 默认构造
- }
-
- Component.prototype.createOperations = function()
- {
- // 调用默认实现
- component.createOperations();
-
- // 添加开始菜单
- if (systemInfo.productType === "windows") {
- component.addOperation("CreateShortcut",
- "@TargetDir@/bin/MyApp.exe",
- "@StartMenuDir@/MyApp.lnk",
- "workingDirectory=@TargetDir@");
- }
- }

当程序安装完成之后,就能在开始菜单中找到了:
5 准备打包文件
Tips:
data 目录用于存放最终要打包的文件(.exe、.dll 等)。Qt IFW 在制作安装程序时,会用自带的 archivegen 工具将这些文件压缩成 7zip 格式;然后在安装时,再从压缩包中将它们提取出来。
这是最简单,也是最关键的一环。由于在《准备 Qt 安装包》一节中,我们已经组织好了程序结构,现在只需要将其拷贝到 data 目录下即可:
当一切准备就绪,就可以创建第一个安装程序了。
6 生成安装程序
要生成安装程序,需要借助 Qt IFW 提供的 binarycreator 工具(参考:https://doc.qt.io/qtinstallerframework/ifw-tools.html#binarycreator)。这个工具十分强大,除了创建离线/在线安装程序之外,还支持像 -v 这样的选项,以便于调试输出。
打开 CMD(或者 PowerShell),并进入包目录 deploy,然后输入
binarycreator -c config\config.xml -p packages MyInstaller.exe -v
命令。
待执行成功之后,会生成一个名为 MyInstaller.exe 的安装程序:
不要忘了测试一下,看最终的安装效果是否如预期一样?程序的各项功能是否正常?假如没有任何问题,便可以将其交付给最终用户了。
高效程序员
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。