QtIFW 安装包制作总结
一、引言
当一个软件开发完成后,需要发布。面对发布,故而需要制作一个安装器,将其软件运行本体打包。并可根据软件运行的平台进行相关平台参数的定制。从而实现软件的安装。
一个软件包安装器,可能包含以下几个部分:
本系列文章围绕QtIFW为主题,记录如何使用QtIFW进行软件的打包,以及安装包的个性化定制、多组件安装等。
二、一个常规软件发布安装包的制作流程细节
注:本部分内容假设运行平台环境为Windows。
基于QtIFW的软件发布,需要进行以下几个步骤的处理:
(1)创建一个包含所有配置文件和可安装包的包目录。
(2)创建一个配置文件(config.xml),其中包含关于如何构建安装程序二进制文件和在线存储库的信息。
(3)创建包含可安装组件信息的包信息文件。
(4)创建安装程序内容并将其复制到包目录。
(5)使用binarycreator工具来创建安装程序。
2-1、创建一个包含所有配置文件和可安装包的包目录
创建一个反映安装程序设计的目录结构,并允许将来扩展安装程序。该目录必须包含名称为config和packages的子目录。如下图所示:
2-2、创建一个配置文件(config.xml)
在config目录中,创建一个名为config.xml的文件,包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>gammaray</Name>
<Version>2.11.50</Version>
<Title>gammaray</Title>
<Publisher>kdab Qt-Project</Publisher>
<!-- Directory name is used in component.xml -->
<StartMenuDir>gammaray</StartMenuDir>
<TargetDir>@HomeDir@/gammaray</TargetDir>
</Installer>
config.xml配置文件指定了在简介页面显示的信息:
-
<Title>元素指定显示在标题栏上的安装程序名称。
-
<Name>元素指定添加到页面名称和介绍文本中的应用程序名称。
-
<Version>元素指定应用程序的版本号。
-
<Publisher>元素指定软件的发布者(例如,在Windows控制面板中显示)。
-
<StartMenuDir>元素指定Windows开始菜单中产品的默认程序组的名称。
-
<TargetDir>元素指定向用户显示的默认目标目录是当前用户的主目录中的InstallationDirectory(因为预定义的变量@HomeDir@用作值的一部分)
2-3、创建包含可安装组件信息的包信息文件。
在这个简单的场景中,安装程序只处理一个名为org.gammaray.entry的组件。为了向安装程序提供有关组件的信息,创建一个名为package.xml的文件,包含以下内容,并将其放在目录中:
package.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>gammaray</DisplayName>
<Description>gammaray</Description>
<Version>2.11.50</Version>
<ReleaseDate>2021-09-04</ReleaseDate>
<Licenses>
<License name="gammaray Public License Agreement" file="LICENSE.GPL.txt" />
</Licenses>
<Default>true</Default>
<Script>installscript.qs</Script>
</Package>
关于package.xml文件的编写可参考文档:
-
<DisplayName>元素指定组件列表中组件的名称。
-
<Description>元素指定了当组件被选中时显示的文本。
-
<Version>元素使您能够在更新可用时向用户推送更新。
-
<License>元素表示在License检查页面显示的包含License协议文本的文件名称。
-
<Default>元素指定组件是否默认被选中。值true将组件设置为所选。在本例中,我们使用值脚本在运行时解析值。脚本文件的名称为“installscript”。
function Component() { // default constructor } Component.prototype.createOperations = function() { // call default implementation to actually install README.txt! component.createOperations(); if (systemInfo.productType === "windows") { component.addOperation("CreateShortcut", "@TargetDir@/bin/gammaray-launcher.exe", "@StartMenuDir@/gammaray-launcher.lnk", "workingDirectory=@TargetDir@"); component.addOperation("CreateShortcut", "@TargetDir@/bin/gammaray.exe", "@StartMenuDir@/gammaray.lnk", "workingDirectory=@TargetDir@"); component.addOperation("CreateShortcut", "@TargetDir@/bin/gammaray-client.exe", "@StartMenuDir@/gammaray-client.lnk", "workingDirectory=@TargetDir@"); component.addOperation("CreateShortcut", "@TargetDir@/bin/gammaray-launcher.exe", "@DesktopDir@/gammaRay.lnk"); } }
在设计安装包时,许多复杂的安装包功能都需要在installscript.qs文件中进行设置。
2-4、创建安装程序内容并将其复制到包目录
将待安装的内容存储在org.gammaray.entry组件的data目录下。(因为只有一个组件,所以将数据放在org.gammaray.entry目录)。如果有多个组件就需要在packages目录下创建多个目录。
2-5、使用binarycreator工具来创建安装程序
在windows命令行上,输入:
binarycreator.exe -c config\config.xml -p packages Installer.exe
(注意,这里需要指定 binarycreator.exe的运行路径)
生成Installer.exe安装包。如下图所示:
三、效果显示
生成Installer.exe安装包后,点击运行。效果如下:
本文未完待续,后续将分享记录一些关于《个性化定制安装包》,《制作在线安装器》的文章!!!哈哈