一文看懂如何利用QtIFW制作安装包,小白也能看懂且学会的软件安装包制作教程
更新:团队现在改成使用 Installer Studio 这个软件来打包了,用过NSIS, Inno Setup,InstallShield,Qt Installer Framework(QtIFW),Advanced Installer和 Installer Studio,还是觉得 Installer Studio 好用太多了
前言
安装包制作工具的选择
安装程序生成工具就是将应用程序和依赖的文件打包到一个可执行的安装程序种,可以简化用户的安装流程和体验,但开发的软件依赖和配置过于繁杂的时候,制作一个安装包就特别必要,所以需要简单学习一下安装程序生成工具,以下是常见的安装程序生成工具:
Installer Studio
无需编写代码,1分钟即可完成软件打包。 基于近百个模板快速构建如QQ等精美高质量安装包, 可以制作离线/在线/静默安装包制作,在线安装包大小只有2MB。 支持自定义注册表,环境变量,快捷方式以及Java,.Net等环境的安装。 可以打包任何类型的应用(html Electron flutter Cocos Unity3D)。 支持构建预览,像画图一样制作产品的安装包。 国际化安装包,产品出海无忧。
Inno Setup 免费且开源的安装程序制作工具,适用于Windows平台。 使用Pascal脚本语言编写安装程序脚本。 提供了丰富的功能和灵活的自定义选项。 拥有详细的文档和活跃的社区支持。
NSIS (Nullsoft Scriptable Install System) 免费且开源的安装程序制作工具,适用于Windows平台。 使用自定义的脚本语言编写安装程序脚本。 具有较小的安装包大小和快速的安装速度。 社区支持广泛,有大量的插件可用。
InstallShield 商业的安装程序制作工具,适用于多个平台,包括Windows、Linux和macOS。 提供了强大的功能和灵活的自定义选项。 拥有可视化界面和向导,使得制作安装程序变得简单。 文档和支持资源丰富,适用于中大型企业项目。
WiX Toolset (Windows Installer XML) 免费且开源的安装程序制作工具,适用于Windows平台。 使用XML和自定义的脚本语言编写安装程序脚本。 可以创建符合Windows Installer标准的安装程序。 需要一定的学习曲线,但具备强大的灵活性和可扩展性。
Advanced Installer 商业的安装程序制作工具,适用于Windows平台。 提供了易于使用的可视化界面和向导,使得制作安装程序变得简单。 具有丰富的功能,如自动升级、数字签名等。 提供文档和支持渠道。
QtIFW (Qt Installer Framework) 开源的安装程序制作工具,由Qt官方提供,适用于多个平台,包括Windows、Linux和macOS。 使用基于XML的描述语言来配置和自定义安装程序。 可以轻松创建复杂的安装程序,并具有强大的自定义能力。 拥有官方的文档和示例,同时有活跃的社区支持。 这里不卖关子,就选择QtIFW,QtIFW本身就是作为Qt项目的一部分开发的,框架本身使用Qt。然而,它可以用于安装所有类型的应用程序,包括(但不限于)使用Qt构建的应用程序。
而且它是跨平台且使用XML的描述语言来配置安装程序的,所以这里选择QtIFW;以下是使用它制作安装包的详细步骤:
一、环境准备
首先确保你已经安装了 Qt 开发环境,并且 Qt Installer Framework 也已正确安装。在安装好 Qt 后,Qt Installer Framework 通常可以在 Qt 安装目录下的 Tools 文件夹中找到。
二、创建项目结构
- 新建文件夹: 新建一个文件夹作为安装包项目的根目录,例如“MyAppInstaller”。
- 创建子文件夹: 在该目录下创建以下几个重要的子文件夹:
- “meta”:这个文件夹用于存放安装包的配置信息,如包的名称、版本、描述等。
- “packages”:包含了实际要安装的文件和组件信息。
三、编写配置文件
- 在“meta”文件夹中创建“package.xml”文件。这是一个 XML 格式的文件,用于定义安装包的基本属性。例如:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>My Awesome App</DisplayName>
<Description>An application that does amazing things.</Description>
<Version>1.0.0</Version>
<ReleaseDate>2024-11-22</ReleaseDate>
<Licenses>
<License name="MIT License" file="LICENSE.txt"/>
</Licenses>
<Default>true</Default>
</Package>
在这个文件中,你可以设置显示名称、描述、版本号、发布日期以及许可证等信息。
- 同样在“meta”文件夹中,创建“config.xml”文件。这是一个 XML 格式的文件,用于配置安装过程中的一些参数,如安装路径、目标平台等。例如:
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>MyAppInstaller</Name>
<Version>1.0.0</Version>
<Title>My Awesome App Installer</Title>
<Publisher>Your Company Name</Publisher>
<ProductUrl>https://yourcompany.com/myapp</ProductUrl>
<TargetDir>@HomeDir@/MyApp</TargetDir>
</Installer>
这里设置了安装程序的名称、版本、标题、发布者、产品网址以及默认的安装目标目录。
四、准备安装文件
- 在“packages”文件夹下创建与你的应用程序相关的子文件夹。例如,如果你的应用程序有可执行文件、库文件和资源文件,可以分别创建对应的文件夹。
- 将实际要安装的文件复制到相应的文件夹中。例如,将可执行文件“MyApp.exe”复制到“packages/MyApp/bin”文件夹下,将库文件复制到“packages/MyApp/libs”文件夹下等。
五、创建组件描述文件
- 在每个包含安装文件的子文件夹中创建一个“meta”文件夹。
- 在这些“meta”文件夹中创建“package.xml”文件,用于描述该组件的信息。例如,对于可执行文件组件的“package.xml”可以这样写:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>MyApp Executable</DisplayName>
<Description>The main executable of MyApp.</Description>
<Version>1.0.0</Version>
<ReleaseDate>2024-11-22</ReleaseDate>
<Licenses>
<License name="MIT License" file="LICENSE.txt"/>
</Licenses>
<Script>script.js</Script>
</Package>
这里除了基本信息外,还指定了一个脚本文件“script.js”,用于在安装过程中对该组件进行一些自定义操作,如创建快捷方式等。
六、编写脚本(可选但强大)
如果需要在安装过程中执行一些自定义操作,如创建桌面快捷方式、注册组件等,可以在组件的“meta”文件夹下创建脚本文件(如上面提到的“script.js”)。以下是一个简单的创建桌面快捷方式的脚本示例:
function Component()
{
}
Component.prototype.createOperations = function()
{
// 调用父类的 createOperations 方法
component.createOperations();
// 创建桌面快捷方式操作
var shortcutOp = this.createShortcutOperation("MyAppDesktopShortcut",
"@TargetDir@/MyApp.exe",
"@DesktopDir@/MyApp.lnk",
"My Awesome App",
"MyAppIcon.ico",
"");
// 将快捷方式操作添加到安装操作序列中
this.addOperation(shortcutOp);
}
这个脚本定义了一个组件类,并在其中重写了“createOperations”方法,用于创建一个桌面快捷方式操作并添加到安装操作序列中。
七、构建安装包
打开命令行工具,切换到安装包项目的根目录(“MyAppInstaller”),然后运行以下命令:
binarycreator.exe -c meta/config.xml -p packages MyAppInstaller.exe
其中,“binarycreator.exe”是 Qt Installer Framework 提供的构建工具,“-c”参数指定配置文件“meta/config.xml”,“-p”参数指定包含安装文件的“packages”文件夹,最后的“MyAppInstaller.exe”是生成的安装包文件名。
执行完命令后,如果没有错误,将会在当前目录下生成“MyAppInstaller.exe”安装包文件。这个安装包就可以在目标平台上运行,按照我们配置的步骤和操作来安装应用程序及其相关组件了。
通过以上步骤,你就可以使用 Qt Installer Framework 成功创建一个功能丰富的安装包,为你的 Qt 应用程序提供便捷的部署方式。