之前用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文件也更换了新的图标。

得到的结果如下:

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

最后就是打包了。

打包使用NSIS+NSIS Edit

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

准备文件
   以下是我即将打包的所有文件,安装包目录结构(包括:可执行程序、插件库、运行时库、授权文件、卸载程序图标等等!)如下图所示:

1、利用向导制作安装包:

2、填写应用程序基本信息
3、指定安装程序所用选项
   注意:这里选择语言为SimpChinese
4、设置应用程序安装目录与授权文件
5、指定应用程序文件
6、指定创建应用程序图标
7、选择安装程序完成后运行的动作
8、指定接触安装程序属性
9、进行脚本编译、保存
10、等待编译完成,即可运行打包后的安装包
   大功告成之后,即可进行安装!
(1)安装程序
(2)此处显示授权文件中的内容
(3)选择安装目录
(4)运行程序,并显示“自述文件”
(5)运行结果
   关于Qt的打包工具了解一些,个人感觉NSIS用起来比较顺手,脚本修改起来也方便,所以就推崇一下

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

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

  1. Qt5学习笔记之串口助手三:打包成Windows软件

    这里写目录标题 添加图标 打包程序 测试打包好的软件 添加图标 图标的获取可以参考我的另一篇文章:Qt5学习笔记之图标下载和转换,这里只记录下Qt中使用图标的方法. 1.切换到release模式下进行 ...

  2. QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)

    QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...

  3. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  4. Qt学习笔记之国际化

    国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程. 1. 相关的Qt类和AP ...

  5. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  6. QT学习笔记(八):顺序容器和关联容器

    QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...

  7. QT学习笔记(六):Qt5主窗口框架示例

    QT学习笔记(五):Qt5主窗口框架代码示例 一.添加编辑菜单:并在下拉菜单和工具栏中添加"打开文件"动作菜单 #include <QToolButton> #incl ...

  8. QT学习笔记(二):QT MinGW 和 MSVC 编译方式

    QT学习笔记(二):QT MinGW 和 MSVC 编译方式 Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是使用两种不同的编译器. 1.MSVC是指微软的VC编译器: 2.MingGW ...

  9. QT学习笔记(一):VS2013 +QT 5.8 运行、编译问题解决

    QT学习笔记(一):VS2013 +QT 5.8 运行.编译问题解决 jom: E:\C++\4.QT\HelloWord\Makefile.Debug [debug\moc_predefs.h] E ...

最新文章

  1. 【博士论文】物联网数据安全可信的共享技术研究
  2. 清空Python Shell 窗口的方法 - ClearWindow
  3. 2021牛客多校3 - 24dian(dfs)
  4. OS- -I/O之盘和时钟
  5. OS- -计算机硬件简介
  6. opensource项目_最佳Opensource.com:访谈
  7. window中搭建jenkins_为容器化的 Go 程序搭建 CI
  8. BZOJ3711 : [PA2014]Druzyny
  9. CADD课程学习(2)-- 靶点晶体结构信息
  10. 批量下载Landsat快视图,为批量下载Landsat Level1数据做准备
  11. Google DFP广告管理系统简介:开始与您的网站进行广告集成
  12. 小米文件管理android,小米文件管理器
  13. 关于Mifare Classic Tool (MTC)工具的秘钥包
  14. 自恋的人脑袋有啥不一样?| 自恋型人格特质和前额脑结构
  15. docx4j生成Word添加页眉页脚水印 页眉页脚奇偶显示首页显示
  16. 2021年质量员-市政方向-通用基础(质量员)考试题及质量员-市政方向-通用基础(质量员)考试试卷
  17. SpringBoot 实现 Office 各种格式在线预览(详细教程,包教包会)
  18. Flask-admin Model View字段介绍
  19. echarts双y轴,自定义y轴显示字段
  20. 腾讯云-轻量应用服务器部署Springboot项目+后台持续运行

热门文章

  1. 《Timing is Almost Everything》作者访谈
  2. PHP+shell实现多线程的方法
  3. 五个未来最吃香的技能 数据分析排第一
  4. 实战自制Linux操作系统
  5. Activity内部Handler引起内存泄露的原因分析
  6. Ubuntu Linux下安装MySQL
  7. mysql5.6主从复制与基于amoeba实现读写分离
  8. MOQL—筛选器(Selector)(一)
  9. 【CS229】多变量线性回归
  10. vulkan 利用GPU加速ENet