之前用MFC生成过安装文件,今天想尝试采用Qt生成的exe文件打包并生成安装软件。
开始我认为比较简单,但是尝试过程中遇到了很多问题。下面一一列出来
首先:我认为,要完成一个软件,应尽可能的使用Release版本文件,当然了,可以现在Debug版本下调试通过再进行测试 打包 生成。
原因是,Debug版本会编译生成很多中间结果。
举个例子,可以看到,用Qt Creator编译器运行生成的exe可执行文件时,如果用Debug模式生成的可执行文件会比较大。我用一个简单的程序测试Debug模式有417KB
而切换到Release模式下只有19KB,较大的文件就更不用说。
而且,更要命的是,生成的exe文件拷贝到其他电脑上时,并不能直接运行。还需要添加很多dll动态链接库文件。
可以看到在Qt中debug版本的dll会很大很大,比如
通过对比发现debug模式下的dll有时甚至有100+MB,所以在后面的打包发布时候,会造成安装软件很大,非常不便。
所以,一定得切换到release版本下运行,并打包发布!!!
2、生成一个exe可执行文件之后,把这个exe文件拷贝到其他电脑上面运行。
必然会要求我们添加很多dll比如上面列举出来的dll,这些dll都在Qt安装包bin文件夹下面。
其他的可能在Windows/System32里面
在不确定调用到哪些dll时,使用软件Dependency Walker查看具体应用情况。如下图所示:
这里就要求调用这几个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.....................
或者是:
等等。还有icudt51.dll icuin51.dll icuuc51.dll libEGL.dll文件等等
开始在网上看到还要添加platforms中的qwindows.dll.结果添加了之后还是报错。(platforms文件夹也在Qt安装包中),最后发现,是需要新建一个文件夹名字为platforms。文件夹中的内容为qwindows.dll。至此,程序终于可以在另外一台电脑上运行了!
具体如下:
但是,实际的安装软件中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文件也更换了新的图标。
得到的结果如下:
最后就是打包了。
打包使用NSIS+NSIS Edit
下面是转载,不过本人已亲测好用!点击这里。
到此,所有关于Qt的移植和安装软件结束,may help~~~2014.07.21