QT打包EXE为安装文件(完整过程)

677 阅读4分钟

首先,说一下QT生成的EXE在本地打开报错的情况。

第一步:确定QT安装目录是否添加到环境变量,主要有以下两个方面,使用的编译器不同,比如有多个编译器时可以添加多个独立的环境变量,我个人觉得这样比较保险。

image.png

image.png

第二步:上述环境变量都添加完成了,双击EXE还是报错,问题不大,这个时候已经排除了环境变量的问题,有些依赖的DLL文件没有被加载进来,这个仅靠添加环境变量是不能解决的。要通过windeployqt自动生成DLL文件,例如程序中调用了Opencv库时,直接使用编译器没有任何问题,但是生成的EXE文件无法直接运行,运行时报错如下。

image.png

对于这类的错误,首先确定编译EXE时所使用的编译器,例如使用MinGW时,需要打开下面的界面,而不是dos窗口,界面如下

image.png

然后通过cd命令,切换到EXE所在的文件夹下面。然后执行下面的命令,耐心等待完成即可

windeployqt name.exe

完成后会得到下面的结果

image.png

然后,会发现exe文件夹下面多了很多DLL文件,还有一些文件夹,此时再点击EXE文件,就可以运行了。

解决了上面的问题,下面开始说一下利用打包工具进行打包

打包时需要两个软件,软件的链接我放在这里,需要的可以免费获取 链接:pan.baidu.com/s/13bMgoLsq… 提取码:m4df

这两个文件的安装完成后大概长下面这样

image.png

首先,打开HM NIS Edit,界面如下

image.png

然后按照下面的步骤进行操作,首先选择“文件”,然后选择“新建脚本:向导(W)”

image.png

点击之后,会出现下面的界面,点击下一步即可

image.png

然后会弹出下面的界面,应用程序名称,是打包后安装时应用程序的名称,这个自己根据实际情况写,应用程序版本号也是根据自己实际情况写,然后是程序的出版人,以及应用程序的网站。

image.png

然后选择一下应用程序的图标,选择安装时语言(SimpChinese),然后继续点击下一步

image.png

然后就是手写一个授权文件的txt,内容随意,然后选择路径即可

image.png

然后继续下一步

image.png 这两个文件跟我们没啥关系,直接删掉即可,然后就是选择我们自己的安装文件所在位置,点击红圈位置

image.png

image.png

然后点击确定,会出现下面的界面

image.png

然后点击下一步,出现下面的界面

image.png 然后继续点击下一步

image.png

继续下一步,[name]中的name替换为自己程序的名字,主要是在卸载程序时给出的提示中说明要卸载的程序名称。

image.png

然后就要大功告成了。。

image.png

选择脚本的保存路径和名称后,会自动加载出脚本的代码

image.png

接下来就是脚本的编译

image.png

编译完成后结果如下

image.png 会在目录下生成一个脚本文件,如下所示

image.png 同时会生成一个安装文件,如下所示,这个是没有改名字的结果,就叫setup.exe

image.png 然后就是测试打包的效果了,双击setup.exe,结果如下

image.png 看着样子还不错,是我们预期的结果,与网上安装别人的软件的界面看起来非常相似了。 哦豁,居然我自己写的授权文件的txt加载进来之后居然是乱码,估计是编码问题,懒得再回头复盘一下。

image.png

然后就是选择安装位置进行安装

image.png

依然是我们熟悉的默认的C盘,然后就是默认安装呗

image.png 安装完成之后弹出类似于别人安装完成之后的界面,真不错,希望最后能正常运行起来,哈哈。

然后不取消对勾,点击完成,非常nice,正常运行。整个程序就是一个datetimeedit控件。

image.png

运行时任务栏显示

image.png

桌面上程序的快捷方式,由于我也没有设置ico的位置,默认图标,所以显示就是这个样子。

image.png

然后再看一下安装包的内容,还真不错,直接将我们里面的东西copy了一份,真的是一模一样

image.png

下面是QT编译debug包的内容,对比一下,一模一样。

image.png 下面再测试一下,看一下卸载是否正常。

首先在控制面板中找到“我的程序”这个软件

image.png

然后就是点击卸载,会出现下面的提示,点击是

image.png

然后就是卸载成功了

image.png

再去看一下“我的程序”安装位置里面还剩下什么

image.png 确实没有卸载干净,我们还是自己动手卸载干净吧。 整个软件的打包发布过程就是这些了,如果打包过程中遇到什么问题可以在评论区指出,我会马上修改。