Qt学习笔记之——生成exe可执行文件并打包生成安装软件

时间:2021-04-29 22:15:56

之前用MFC生成过安装文件,今天想尝试采用Qt生成的exe文件打包并生成安装软件。

开始我认为比较简单,但是尝试过程中遇到了很多问题。下面一一列出来

首先:我认为,要完成一个软件,应尽可能的使用Release版本文件,当然了,可以现在Debug版本下调试通过再进行测试 打包 生成。

原因是,Debug版本会编译生成很多中间结果。

举个例子,可以看到,用Qt Creator编译器运行生成的exe可执行文件时,如果用Debug模式生成的可执行文件会比较大。我用一个简单的程序测试Debug模式有417KB

而切换到Release模式下只有19KB,较大的文件就更不用说。

而且,更要命的是,生成的exe文件拷贝到其他电脑上时,并不能直接运行。还需要添加很多dll动态链接库文件。

可以看到在Qt中debug版本的dll会很大很大,比如

Qt学习笔记之——生成exe可执行文件并打包生成安装软件Qt学习笔记之——生成exe可执行文件并打包生成安装软件

Qt学习笔记之——生成exe可执行文件并打包生成安装软件Qt学习笔记之——生成exe可执行文件并打包生成安装软件

Qt学习笔记之——生成exe可执行文件并打包生成安装软件Qt学习笔记之——生成exe可执行文件并打包生成安装软件

通过对比发现debug模式下的dll有时甚至有100+MB,所以在后面的打包发布时候,会造成安装软件很大,非常不便。

所以,一定得切换到release版本下运行,并打包发布!!!


2、生成一个exe可执行文件之后,把这个exe文件拷贝到其他电脑上面运行。

必然会要求我们添加很多dll比如上面列举出来的dll,这些dll都在Qt安装包bin文件夹下面。

其他的可能在Windows/System32里面

在不确定调用到哪些dll时,使用软件Dependency Walker查看具体应用情况。如下图所示:

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

这里就要求调用这几个DLL

其中QT5CORE.DLL等等前三个和最后两个都在Qt安装文件bin文件夹下。

而第四第五个文件在System32下

将exe文件和这几个文件拷贝到同一个文件夹下并拷贝到另外一台电脑上运行时还是会报错。报错内容是:

This application failed to start because it could not find or load the Qt platform plugin “windows” Reinstalling the application may fix this problem. balabalabala.....................

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

或者是:Qt学习笔记之——生成exe可执行文件并打包生成安装软件

等等。还有icudt51.dll  icuin51.dll  icuuc51.dll  libEGL.dll文件等等

开始在网上看到还要添加platforms中的qwindows.dll.结果添加了之后还是报错。(platforms文件夹也在Qt安装包中),最后发现,是需要新建一个文件夹名字为platforms。文件夹中的内容为qwindows.dll。至此,程序终于可以在另外一台电脑上运行了!

具体如下:

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

但是,实际的安装软件中exe文件图标都比较好看

其实,Qt中可以在编译的时候得到!

具体操作如下:

在Qt Creator的帮助索引中查找Setting the Application Icon关键字,这里列出了在Windows上设置应用程序图标的方法,主要的步骤如下:

(1) 首先准备一个.ico图标文件(假定为musicmaker.ico),并将其复制到工程目录(.pro文件所在的目录)
    (2) 然后在QT Creator选择文件菜单中的新建文件或项目,在弹出的新建对话框中选概要,文本文件,名称填写为.rc文件(如pynxl.rc),在文件中写入该行:
          IDI_ICON1               ICON     DISCARDABLE     "musicmaker.ico"
    (3) 编辑项目文件,即.pro文件,在最后面添加下面一行代码:
          RC_FILE = musicmaker.rc
    (4) 重新编译程序,可以看到窗口的左上角的图标已经更换了,然后查看一下release文件夹中的文件,可以看到现在的exe文件也更换了新的图标。

得到的结果如下:

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

关于更多DLL知识可以看这里这里

最后就是打包了。

打包使用NSIS+NSIS Edit

下面是转载,不过本人已亲测好用!点击这里

准备文件
    以下是我即将打包的所有文件,安装包目录结构(包括:可执行程序、 插件库、运行时库、授权文件、卸载程序图标等等!)如下图所示:
Qt学习笔记之——生成exe可执行文件并打包生成安装软件
1、利用向导制作安装包:
Qt学习笔记之——生成exe可执行文件并打包生成安装软件

2、填写应用程序基本信息

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

3、指定安装程序所用选项
     注意:这里选择语言为SimpChinese
Qt学习笔记之——生成exe可执行文件并打包生成安装软件

4、设置应用程序安装目录与授权文件

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

5、指定应用程序文件

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

6、指定创建应用程序图标

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

7、选择安装程序完成后运行的动作

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

8、指定接触安装程序属性

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

9、进行脚本编译、保存

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

10、等待编译完成,即可运行打包后的安装包
Qt学习笔记之——生成exe可执行文件并打包生成安装软件

    大功告成之后,即可进行安装!

(1)安装程序

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

(2)此处显示授权文件中的内容

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

(3)选择安装目录

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

(4)运行程序,并显示“自述文件”

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

(5)运行结果

Qt学习笔记之——生成exe可执行文件并打包生成安装软件

    关于Qt的打包工具了解一些,个人感觉NSIS用起来比较顺手,脚本修改起来也方便,所以就推崇一下

到此,所有关于Qt的移植和安装软件结束,may help~~~2014.07.21