






















使用完整的windeploy.exe路径执行:例如在项目根目录下执行:
D:\Qt\6.10.1\mingw_64\bin\windeployqt.exe --release --no-translations .\build\Desktop_Qt_6_10_1_MinGW_64_bit-Release\appSerialPortAssist.exe
完成后Desktop_Qt_6_10_1_MinGW_64_bit-Release目录下会自动加入所依赖的dll文件。
注意:这里的--release代表可执行文件是在release模式下生成的,需要确保此点才能正确运行!
也可切换为--debug那么后面的exe对应就是debug模式下生成的。
xxx\Qt\Tools\QtInstallerFramework。D:\Qt\Tools\QtInstallerFramework\4.10\bin目录加入到环境变量PATH中。(这里的目录只是示例,实际版本以实际目录为准)installer目录,并将D:\Qt\Tools\QtInstallerFramework\4.10\examples\startmenu目录下的config和packages两个目录拷贝到新建的installer目录下。Desktop_Qt_6_10_1_MinGW_64_bit-Release目录下的所有文件(可不要一些临时文件、cmake文件等,以及以小数点开头的文件夹)拷贝到installer\packages\org.qtproject.ifw.example\data目录下Windows PowerShellinstaller\packages\org.qtproject.ifw.example\meta\package.xml文件的DisplayName标签和Description标签。installer\config\config.xml文件中的Name标签和Title标签。binarycreator.exe --offline-only -c .\installer\config\config.xml -p .\installer\packages\ XXX.exe -v详细设计可参考官方




你想知道在 Qt 的安装框架(Qt Installer Framework,简称 QIF)中如何添加多个安装包(package),核心是通过配置 packages 目录结构和 package.xml 文件来定义多个独立的安装组件,让用户可以选择安装不同的功能模块。
Qt Installer Framework 中,每个 package 对应一个独立的安装组件(比如“主程序”“插件”“示例”),需要按固定目录结构组织,每个 package 都有自己的 package.xml 配置文件,最终通过 config.xml 统一管理所有 package。
首先按以下结构创建项目(这是多 package 的核心前提):
MyInstaller/
├── config # 全局配置目录
│ └── config.xml # 安装器全局配置
├── packages # 所有package存放目录
│ ├── com.mycompany.app.main # 第一个package:主程序
│ │ ├── data # 该package的安装文件(如exe、dll)
│ │ └── meta # 该package的元配置
│ │ └── package.xml
│ ├── com.mycompany.app.plugin # 第二个package:插件
│ │ ├── data
│ │ └── meta
│ │ └── package.xml
│ └── com.mycompany.app.doc # 第三个package:文档
│ ├── data
│ └── meta
│ └── package.xml
└── installerbase.exe # QIF提供的安装器基础程序(可选)
注意:package 名称建议用「反向域名」格式(如
com.mycompany.app.main),避免命名冲突。
每个 package 的 meta/package.xml 定义该组件的名称、描述、依赖、是否可选等属性,以下是 3 个示例:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>主程序</DisplayName> <!-- 安装界面显示的名称 -->
<Description>核心应用程序,必须安装</Description>
<Version>1.0.0</Version> <!-- 版本号 -->
<ReleaseDate>2026-01-12</ReleaseDate>
<Name>com.mycompany.app.main</Name> <!-- 唯一标识,和目录名一致 -->
<Script>installscript.qs</Script> <!-- 可选:安装脚本(如自定义逻辑) -->
<Default>true</Default> <!-- 默认勾选 -->
<Required>true</Required> <!-- 必装组件(用户无法取消) -->
<SortingPriority>100</SortingPriority> <!-- 安装界面显示优先级(数值大在前) -->
</Package>
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>扩展插件</DisplayName>
<Description>额外功能插件,可选安装</Description>
<Version>1.0.0</Version>
<ReleaseDate>2026-01-12</ReleaseDate>
<Name>com.mycompany.app.plugin</Name>
<Default>false</Default> <!-- 默认不勾选 -->
<Required>false</Required> <!-- 可选组件 -->
<Dependencies>com.mycompany.app.main</Dependencies> <!-- 依赖主程序 -->
<SortingPriority>90</SortingPriority>
</Package>
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>使用文档</DisplayName>
<Description>用户手册和API文档</Description>
<Version>1.0.0</Version>
<ReleaseDate>2026-01-12</ReleaseDate>
<Name>com.mycompany.app.doc</Name>
<Default>false</Default>
<Required>false</Required>
<SortingPriority>80</SortingPriority>
</Package>
在 config/config.xml 中声明所有 package,并配置安装器的全局属性:
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>My Qt Application</Name> <!-- 安装器名称 -->
<Version>1.0.0</Version>
<Title>My Qt App 安装程序</Title> <!-- 安装界面标题 -->
<Publisher>My Company</Publisher> <!-- 发布者 -->
<StartMenuDir>My Qt App</StartMenuDir> <!-- 开始菜单目录 -->
<TargetDir>@HomeDir@/MyQtApp</TargetDir> <!-- 默认安装路径 -->
<!-- 声明所有要包含的package -->
<Package>com.mycompany.app.main</Package>
<Package>com.mycompany.app.plugin</Package>
<Package>com.mycompany.app.doc</Package>
</Installer>
将对应文件放入每个 package 的 data 目录:
com.mycompany.app.main/data:放入主程序 exe、Qt 依赖库等核心文件;com.mycompany.app.plugin/data:放入插件 dll/so 文件;com.mycompany.app.doc/data:放入 PDF 文档、README 等。使用 QIF 提供的 binarycreator 工具打包(需配置 QIF 环境变量):
# Windows 命令
binarycreator.exe -c config/config.xml -p packages MyInstaller.exe
# Linux/macOS 命令
binarycreator -c config/config.xml -p packages MyInstaller.run
前置条件:确保 Qt Installer Framework 已安装(Qt 维护工具中勾选「Qt Installer Framework」组件),且
binarycreator所在路径(如Qt/Tools/QtInstallerFramework/4.5/bin)已加入系统环境变量。
Dependencies(依赖):
<Dependencies>pkg1,pkg2</Dependencies>。Required/Default:
Required="true":组件必装,安装界面无法取消勾选;Default="true":组件可选,但默认勾选。SortingPriority:
分组显示组件:
如果 package 数量多,可通过 <Group> 标签分组:
<!-- 在 config.xml 中添加 -->
<Groups>
<Group>
<Name>核心组件</Name>
<Packages>
<Package>com.mycompany.app.main</Package>
</Packages>
</Group>
<Group>
<Name>可选组件</Name>
<Packages>
<Package>com.mycompany.app.plugin</Package>
<Package>com.mycompany.app.doc</Package>
</Packages>
</Group>
</Groups>
自定义安装逻辑:
每个 package 可添加 installscript.qs 脚本,实现自定义操作(如创建快捷方式、修改注册表):
// com.mycompany.app.main/meta/installscript.qs
function Component() {
// 安装完成后创建桌面快捷方式
Component.prototype.createOperations = function() {
component.createOperations();
if (systemInfo.productType === "windows") {
addDesktopShortcut("MyQtApp.exe");
}
};
}
data(安装文件)和 meta/package.xml(组件配置);config.xml 全局声明所有 package,可通过 Groups 分组、Dependencies 配置依赖;binarycreator 工具打包,生成包含多个可选组件的安装程序。关键点:每个 package 的 Name 必须和目录名一致,Required/Default 控制组件是否必装/默认勾选,Dependencies 确保组件间的依赖关系正确。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。