Window系统打包QT程序

1、为什么打包

有时候我们编译出来的QT程序要给别人用,那么别人的电脑上可能没有安装QT,QT版本不同,或者其他因素的影响导致运行不了我们的程序,那么就需要打包给别人,把程序运行时候需要的一些库等资源都打包在一起,这样就不需要考虑别人运行环境,因为所有的资源都打包提供了!

举例:

我这边随意编译一个QT程序,就简单的一个图像界面,编译出来的名字叫 NDDS.exe,我单独把这个程序拷贝到 NDDS_package下,运行是不成功的,因为找不到运行时需要的动态库

2、解决方案

  • 使用 windows qt 自带的 windeployqt工具进行打包
  • 使用 qt cmd 运行打开,因为有时候你并没有把路径添加到环境变量中去,编译器版本要看你使用的是什么,我这边是 MinGW7.3.0 64-bit的编译器
  • 我这边的 windeployqt工具 路径在 D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin 下,可以把你自己的这个路径添加到环境变量中去,这样可以在任意目录下使用 windeployqt

 查看 windeployqt 路径

D:\Work\Workspace\QT\NDDS_package>where windeployqt
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\windeployqt.exe

 windeployqt 工具打包

D:\Qt\Qt5.14.2\5.14.2\mingw73_64>cd D:\Work\Workspace\QT\NDDS_package

D:\Work\Workspace\QT\NDDS_package>windeployqt  NDDS.exe
D:\Work\Workspace\QT\NDDS_package\NDDS.exe 64 bit, release executable
Adding Qt5Svg for qsvgicon.dll
Skipping plugin qtvirtualkeyboardplugin.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_hangul.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_openwnn.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_pinyin.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_tcime.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Skipping plugin qtvirtualkeyboard_thai.dll due to disabled dependencies (Qt5Qml Qt5Quick).
Direct dependencies: Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
All dependencies   : Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
To be deployed     : Qt5Core Qt5Gui Qt5SerialPort Qt5Svg Qt5Widgets
Updating Qt5Core.dll.
Updating Qt5Gui.dll.
Updating Qt5SerialPort.dll.
Updating Qt5Svg.dll.
Updating Qt5Widgets.dll.
Updating libGLESv2.dll.
Updating libEGL.dll.
Updating D3Dcompiler_47.dll.
Updating opengl32sw.dll.
Updating libgcc_s_seh-1.dll.
Updating libstdc++-6.dll.
Updating libwinpthread-1.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/iconengines.
Updating qsvgicon.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/imageformats.
Updating qgif.dll.
Updating qicns.dll.
Updating qico.dll.
Updating qjpeg.dll.
Updating qsvg.dll.
Updating qtga.dll.
Updating qtiff.dll.
Updating qwbmp.dll.
Updating qwebp.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/platforms.
Updating qwindows.dll.
Creating directory D:/Work/Workspace/QT/NDDS_package/styles.
Updating qwindowsvistastyle.dll.
Creating D:\Work\Workspace\QT\NDDS_package\translations...
Creating qt_ar.qm...
Creating qt_bg.qm...
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_da.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_es.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_gd.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_uk.qm...
Creating qt_zh_TW.qm...

 这样打包后就把程序需要的动态库资源都拷贝过来了,可以直接运行 NDDS.exe 这个程序了

关于这个打包里面的东西其实有一些并没有用的上,比如 translations 语言翻译等其实不需要,还有一些动态库也没用上,但是我不建议去删除,如果非要删除可以自行分析下,如win10系统下资源监视器去看一个进程关联了哪些模块 (cmd 中输入 resmon.exe 可以直接打开),linux 系统下可以 ldd+程序名 查看

建议不删除,然后把这个目录压缩打包给别人就行了

 3、打包成安装包

安装包就像你平时下载安装的程序,选择安装到哪个目录下,是否创建桌面快捷方式等,两个工具,一个是 NIS Edit,一个是Inno Setup,以 Inno Setup举例:

Inno Setup 官网:https://jrsoftware.org/isdl.php 

1)、下载 innosetup-6.2.0.exe 工具安装,安装后打开工具如下图

2)、使用 innosetup 打包

  • 参考下面一系列的图

 

 

 

 

 

 

 

 

 

 

 

 

上面步骤操作完后,跳到下面界面编译,如果有错误会提示,上面我特意把ico图标格式没选对

 

 那为了演示,删除错误这行,然后再次运行

 

 编译完成后桌面上就有了打包好的安装程序,这个程序和大家平时下载的exe安装程序一样

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HarkerYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值