QT软件打包发布,踩坑记录

一、过程概述

QT 构建出来的exe文件,依赖系统内散落在各处的dll文件,我们把需要的dll文件提取出来,然后打包、生成安装文件。下面的介绍,以生成64位应用为例,生成32位的过程同理。

  1. 生成 release 版本的exe 文件;
  2. 利用官方的windeployqt.exe 生成exe文件的所有依赖文件。
  3. 利用inno setup 制作安装包。

二、生成release版本的exe文件

我们构建工程时,可以选择Debug 和 Release 两种方式,由于Debug 版本携带了大量的调试信息,这些调试信息,对用户来说是没必要的,所以我们选择Release 版本提供给用户。
在这里插入图片描述
在这里插入图片描述

  1. 选择要构建的是32 位的还是64位的程序;选择Release ;
  2. 点击 “小铁锤”构建工程。
  3. 在工程的输出目录下,找到刚才构建出来的exe文件(MyUart.exe)。

三、根据exe 文件,生成依赖文件

将上一步生成的 release 版本的exe文件(MyUart.exe ),拷贝到一个空的文件夹下。我在验证时,拷贝到MyUart 文件夹下。接下来,我开始踩坑了。

1. 踩坑过程

  • 打开wsl ,将windeployqt.exe 的路径添加到wsl 的PATH;
  • wsl 进入MyUart 目录,执行 windeployqt.exe MyUart.exe , 生成MyUart.exe 所依赖的文件在当前目录。
错误提示1

按照网上的教程,上面两步执行完之后,点击MyUart.exe ,程序就能跑起来了。可惜,事与愿违。点击MyUart.exe 之后,提示: 由于找不到libgcc_s_seh-1.dll,无法继续执行代码。
在这里插入图片描述

利用everything ,找到了libgcc_s_seh-1.dll,拷贝到MyUart.exe 目录下。继续运行。

错误提示2

这次提示: 应用程序无法正常启动(0xc000007b).
在这里插入图片描述

在网上找了好久,没找到可行的解决办法。后来发现,如果把QT的安装目录添加到系统环境下,MyUart.exe 能正常运行。说明还是缺某个文件。但是安装目录下那么多文件,究竟是缺哪个文件,不好确定,有没查看依赖文件的工具呢?

开源工具查看exe 依赖的dll文件

网上果然有开源的工具,支持查看exe的所有依赖文件。Dependencies . 从github 上下载最新的release 文件,打开DependenciesGui.exe 文件,再点击文件,打开MyUart.exe ,打开要分析的exe文件。
在这里插入图片描述
在这里插入图片描述

这里,我们可以找齐MyUart 所依赖的所有dll文件。把依赖的文件添加到MyUart 目录下,程序就可以跑起来了。

2. 正确的过程

虽然前面的过程,实现了程序正常运行,但是太费劲了。QT那么成熟的方案,不至于效率那么低吧?官方提供的windeployqt.exe 工具,应该还是很稳的,不至于缺那么多文件?难道是运行windeployqt.exe 的方式有问题?
使用安装目录下的 Qt 5.12.9( MinGW 7.3.0 64-bit) 运行 windeployqt.exe , 执行完,程序就能直接运行了。不缺任何文件。

四、制作安装包

Inno Setup是一个免费的 Windows 安装程序制作软件,其使用核心在于.iss脚本文件的制作,脚本制作完成后,可进行构建-编译制作安装包。
下载 innosetup
在这里插入图片描述

在这里插入图片描述

填写应用程序名,当前软件版本,公司名,应用官网
在这里插入图片描述

填写安装包的默认安装路径,可以不填,保留默认路径:
在这里插入图片描述

选中执行文件和其所在路径
在这里插入图片描述

这里可以直接next
在这里插入图片描述

next
在这里插入图片描述

next
在这里插入图片描述

next
在这里插入图片描述

选中English
在这里插入图片描述

选中安装包的输出路径和安装文件名:
在这里插入图片描述

next ->Finish
保存并执行脚本,脚本执行完毕,在前面的输出路径,可以找到安装文件。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

gdut_llkkyy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值