Qt 程序发布与打包
本文最后更新于:2026年8月29日 晚上
当 Qt 程序编写完成通过 IDE 编译后就可以得到对应的可执行程序.exe,这个可执行程序在本机本地运行是完全没有问题的(因为在本机本地有对应的 Qt 环境,程序运行过程中可以自动加载到相关的动态库),但是如果我们想把这个 Qt 程序给到其他人使用可能就会出问题了,因为其他人的机器上可能并不具有相应的 Qt 编译环境,所以我们需要将 Qt 程序以及所需的资源一起发布打包给别人,这样在其他机器上不需要 Qt 编译环境也可运行你的 Qt 程序。
1 生成 release 版本程序
相较于 Debug 版本程序,Release 版本程序更加简洁,并且程序大小也会相对小一些,一般打包发布采用 Release 版本的可执行文件.exe。选择构建选项 Release 版本,生成可执行文件.exe,进入 Release 版本可执行文件所在文件夹,即可找到生成的.exe 文件。注意!!!要保证 Qt 所使用的编译器 bin 路径已添加到环境变量 path 中,否则执行 windeployqt 时会漏掉某些动态库文件。
2 可执行文件部署工具 windeployqt
生成的可执行程序在运行的时候需要加载相关的 Qt 库文件,因此需要将这些动态库一并发布给使用者,Qt 官方给我们提供了相关的发布工具,通过这个工具就可以非常轻松的找出这些动态库文件了,这个工具叫做 windeployqt.exe,该文件位于 Qt 安装目录的编译套件目录的 bin 目录中,以我本地为例D:.2\5.14.2_64,如果需要在当前操作系统的任意目录下都可以访问 windeployqt.exe,则需要将此路径设置到环境变量中。
另外使用过程中有出现过程序入口无法定位到动态链接库,无法载入QtCore.dll的情况,将环境变量按如下排列,并重启电脑解决。

将 Release 版本可执行文件复制到一个新的空的文件夹中,在文件夹中按住 Shift+ 右键,打开 PowerShell,输入以下命令:
1 | |
使用这种方式 Qt 会将一些用不到的动态库也拷贝到当前的目录中,如果确定用不到可以手动将其删除,如果不在意这些,完全可以不用理会,更倾向选择后者。现在一个绿色免安装版的程序就得到了,可以将这个目录打个压缩包发送给自己的小伙伴,但是这种方式终究比较 low,我们可以将这个目录中的文件制作成一个安装包,这样就类似于我们在网上下载的安装包程序一样了。
3 程序打包发布(2 种方式)
将应用程序和相关的动态库打包成安装包的工具有很多,现介绍两种方式(工具)Inno Setup 和 Enigma Virtual Box。
3.1 方式 1
Inno Setup,是一个免费的 Windows 安装程序制作软件,小巧、简便、精美。
特点:为应用程序创建安装程序,可自定义应用程序图标,加密安装,自动添加卸载程序,安装后以目录形式存在
下载地址:Inno Setup Downloads
3.1.1 创建向导
点击 File→New,创建脚本向导文件,不要勾选创建一个新的空脚本文件。

3.1.2 填写相关的应用程序信息
填写程序的相关信息,包括应用程序名称、应用程序版本、应用程序发布者以及应用程序网址。

3.1.3 指定应用程序的安装目录相关的信息
设置应用程序安装时的默认安装路径信息。

3.1.4 选择可执行程序和相关的动态库
选择前述 windeployqt 所执行的文件夹路径,选择.exe 可执行文件,选择动态库文件目录。

由于可执行程序关系的动态库有很多,所以可以直接添加动态库的目录,选中对应的目录之后,如果里边还有子目录会弹出如下对话框,选择是即可,需要包含这些子目录。

3.1.5 可执行程序文件格式设置关联
给可执行程序关联本地的某种格式的磁盘文件(比如记事本程序会自动关联本地的 .txt 文件),对于我的可执行程序来说无需关联,因此没有做任何设置,直接下一步。

3.1.6 创建快捷方式
给应用程序创建快捷方式,此处没有进行任何设置,使用的默认选项。

3.1.7 指定许可文件
指定许可文件,文件中的内容会显示到安装向导的相关窗口中,可以选择不指定,直接跳过。

3.1.8 安装模式(All User or Current User)
选择安装模式(给系统的当前用户安装还是给所有用户安装),根据自己喜好指定即可。

3.1.9 选择安装语言
打包工具不提供中文。

3.1.10 指定安装包文件的相关信息

3.1.11 完成打包生成安装程序
勾选Yes,use #define compiler directives

编译生成的脚本文件。

保存脚本文件生成安装包。

编译完成之后,生成的安装包文件在保存脚本文件的目录中。

3.2 方式 2
Enigma Virtual Box,是软件虚拟化工具,它可以将多个文件封装到应用程序主文件,从而制作成为单执行文件的绿色软件。它支持所有类型的文件格式,虚拟化后的软件不释放任何临时文件到您的硬盘,文件模拟过程仅在内存运行。
特点:能够多个文件封装到单个应用程序主文件.exe 直接运行,但不能自定义程序图标。 下载地址:Enigma Virtual Box Downloads
3.2.1 选择需要封包的主程序并设置封包后的程序另存路径

3.2.2 增加文件夹[递归]
选择前述 windeployqt 所执行的文件夹路径,确定添加%DEFAULT FOLDER%

3.2.3 文件选项
勾选文件压缩。

3.2.4 执行封包
生成单个执行文件.exe,可直接运行。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!