序言

当我们完成了Qt程序的开发,希望交予测试,或是正式发布的时候,需要将我们的程序进行层层封装,最终以一个安装包的形式呈现给用户。专业版的软件发布,以Qt软件为例,需要三个步骤:生成版本信息,生成Release版程序,代码打包和制作安装包。本篇将分别对上述三个步骤展开描述。

工作环境

  • 操作系统: Windows 10
  • Qt版本:Qt 5.12.12

添加版本信息

Qt的版本信息配置在项目文件.pro中,编辑该文件,在文件中编辑一些Qt自带的宏,即可实现版本信息的生成。

#程序版本
VERSION = 1.0.0
#程序图标
RC_ICONS = icon.ico
#公司名称
QMAKE_TARGET_COMPANY = "mycompany"
#程序说明
QMAKE_TARGET_DESCRIPTION = "mysoftware"
#版权信息
QMAKE_TARGET_COPYRIGHT = "Copyright(C) 2022"
#程序名称
QMAKE_TARGET_PRODUCT = "app"
#程序语言
#0x0800代表和系统当前语言一致
RC_LANG = 0x0800

其中,程序图标ico的存放位置应和.pro文件位于同一目录下。ico图标可以在线通过其他图片格式转换生成。
编辑完毕后,生成的可执行程序就已经是ico图标的样式了,右键它,【属性】-【详细信息】就可以看到前面编辑的版本信息了。

生成Release版程序

Qt的发布版使用编译器中的Release选项编译。Debug和Release版本,对于程序来说就是链接到不同版本的Qt的动态链接库。Debug版本使用的Qt库以d结尾,如Qt5Cored.dllQt5Guid.dll等,而Release版则没有这个d。Release版本的动态链接库通常比Debug版本的文件容量小得多。

生成Release版程序也很简单,如果使用Qt Creator的话,只用在左下角的构建选项中选择【Release】即可。完成可执行程序生成后,直接鼠标双击会发现提示缺少一些dll文件(而Qt Creator下却可运行),这是因为Windows可执行程序的执行机制是链接到同级目录下的所有所需dll文件,exe才可执行。在本地电脑找到编译Qt生成的dll库,将所需的dll库放在exe的同级目录下,再添加各人项目所需的第三方dll库,双击程序即可运行。

代码打包

上述方式鼠标双击运行的程序,你会发现其中的资源信息都丢失了,图标无法显示出来(而在Qt Creator下显示正常)。我们需要通过Qt给出的打包方式进行代码打包。

我们需要新建一个空的文件夹,将上一步生成的可执行程序放进来。然后根据你Qt的编译器,选择Qt命令行打开。例如我使用MinGW,就打开Qt5.12.12(MinGW 7.3.0 64-bit)。


在终端中,切换到文件夹目录,如:cd C:/folder,然后输入windeployqt app.exe 。然后Qt就会开始自动打包,将所需的一些dll库、资源文件等打包到当前目录下。打包过程无法将你的其他第三方库也打包进来,因此你还是要双击运行,根据提示将缺失的dll库导入到该目录下。发布Release版本的使用命令windeployqt app.exe --release

完成这一步后,一个完整的软件包就制作完成了,双击运行发现资源文件也能被成功加载了。

制作安装包

为了进一步增强软件包的封装性,并给予用户安装软件的相关选择能力,还需要制作安装包程序,给我们的程序再套一层壳子。方便起见,这一步我们直接使用三方安装包制作工具。

这里使用Inno Setup,Inno Setup是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。

可访问Inno Setup官方网站下载软件 https://jrsoftware.org/isdl.php,选择适合你操作系统的软件版本。

  1. 安装后打开,选择【Creator a new script file using the Sciript Wizard】

然后开始按照Inno Setup的流程填写安装包信息。

  1. 填写安装包可执行程序的应用信息。这些内容在安装包生成后,鼠标划到安装包程序上会显示。

  2. 填写默认安装路径。选择自定义方式(Custom),然后填写生成路径。这个路径是安装过程中,默认的程序安装路径,用户可以自行选择是否改变。对于用户来说,路径不存在时会自动创建。

  3. 包含打包文件。这一步就要把前面我们打包好的代码导入到其中。在【Application main executable file】中选择前面生成的可执行程序。选择【Add folder…】,选择可执行程序所在的目录,选择包含目录下的子目录文件。

    再下一步直接点击【Next】。

  4. 应用捷径。这一步可以选择自定义一些安装时的选项,并提供给用户选择。

    后面一直选择【Next】就行。

  5. 选择编译选项。选择生成位置,这一步的生成位置就是安装包生成的路径。此处可以添加一个ico图标作为安装包的图标。密码不建议填。

    后续一路点击【Next】,直到【Finish】完成。

  6. 运行安装包生成脚本。上述所有工作都是为了自动化生成这个安装包生成脚本。这是一个.iss的脚本文件,先把这个脚本保存下来,然后点击运行,自动生成软件安装包的工作就开始了。
    等待一会,安装包就生成好了。


至此,软件安装包就制作完毕了。跟我们平时熟悉的软件一样,用户可以通过这个安装包,将我们打包的程序安装在用户指定的路径,双击可执行程序图标,运行程序了。

Qt软件发布(版本信息,Release版程序,代码打包,制作安装包)相关推荐

  1. 为自己编写的windows应用程序制作安装包

    1 写好了一个windows程序之后如何制作安装包 这个在vs中就可以直接发布了,可以制作msi的安装包和exe的安装包. 2 window应用程序安装包做了哪些事情 rpm安装包的话,只是把相应的文 ...

  2. 软件发布版本区别介绍-Alpha,Beta,RC,Release

    标签: Alpha: Alpha是内部测试版,一般不向外部发布,会有很多Bug.除非你也是测试人员,否则不建议使用. 是希腊字母的第一位,表示最初级的版本 alpha就是α,beta就是β alpha ...

  3. VC下发布的Release版程序的异常捕捉

    VC下发布的Release版程序的异常捕捉寻找Release版程发生异常退出的地方比Debug版麻烦得多.发生异常的时候windows通常会弹出一个错误对话框,点击详细信息,我们能获得出错的地址和大概 ...

  4. 软件发布版本区别介绍

    Alpha: Alpha 是内部测试版,一般不向外部发布,会有很多Bug.除非你也是测试人员,否则不建议使用. 是希腊字母的第一位,表示最初级的版本 alpha就是α,beta就是β alpha版就是 ...

  5. Qt的开源版本与商业版区别及LGPL与闭源程序

    原文地址:http://blog.51cto.com/devbean/313477 最近一直在学习 Qt.Qt 有两个许可证:LGPL 和商业协议.这两个协议在现在的 Qt 版本中的代码是完全一致的( ...

  6. LabVIEW编程技巧:如何制作安装包程序

    目录 一.LabVIEW中制作安装程序的方法 二.生成应用程序(EXE程序) 二.制作安装包程序 三.总结 当我们在LabVIEW平台上辛辛苦苦编写完成测试软件程序时,一般很少情况将程序源代码分发给用 ...

  7. Qt for Android / ios 将图片或文件打包进安装包中

    概述 用 Qt 做程序开发,图片或翻译文件的引用有两种方式,一种是直接引用,本地图片, 一种是编译到资源文件中,其实直接添加在资源文件中是最方便的,不需要考虑文件存放的问题,但是这样可能带来的问题是启 ...

  8. inno setup打包的安装包如何在卸载完程序后可以继续安装_这两个方法就够了!快速制作Python程序Windows安装包...

    点击关注州的先生 编程应用.实战教程,不容错过 /00/ 前言 我们使用Python可以编写很多提高工作和学习效率的小工具,在编写完之后,如果我们想将其分享给更多的人使用,那么最便捷的方法就是将其打包 ...

  9. 基于deepin-wine的windows软件打包deb安装包教程(本實例安裝qq)

    1.安装7z.wine sudo apt install p7zip deepin-wine5 -y 2.用deepin-wine新建一个纯净的32位容器,安装相应的软件 WINEARCH=win32 ...

最新文章

  1. 计算机考研考编程,计算机考研面试------编程语言
  2. Python中的高阶变量
  3. python多线程并发写入_Python多线程并发的简单测试
  4. day 59Bootstrap自带图表和fontawesome图标 导航和导航条 Bootstrap常用插件 sweetalert插件介绍...
  5. ORM + 数据库链接池
  6. Linux基本命令学习笔记
  7. css position, display, float 内联元素、块级元素
  8. iOS 几种打包方式
  9. 【知乎问答】有哪些特殊的搜索引擎?
  10. 【盒子居中常用的四种方法】
  11. xposed的总开关
  12. 线程有哪些状态?创建、就绪、运行、阻塞和死亡
  13. 我与OutLook有个约会
  14. java输出99乘法表
  15. 《数据修复技术与典型实例实战详解》——1.4 分区表的修复
  16. 圣斗士星矢游戏抽奖计算机怎么计算,圣斗士星矢手游抽奖概率是多少 抽奖概率公布[多图]...
  17. 《精通QTP——自动化测试技术领航》—第1章1.2节帮助文档(HELP)-QTP的说明书...
  18. spwm控制算法c语言实现,SPWM波形优化算法及其DSP实现
  19. 合肥32中学2021高考成绩查询,2021年合肥高中录取分数线是多少及高中排名榜
  20. 【微信小游戏实战】零基础制作《欢乐停车场》一、游戏设计

热门文章

  1. 数据泵expdp/impdp导入导出详细说明
  2. MCGS嵌入版基础操作入门(上)
  3. pandorabox挂硬盘文件服务器,PandoraBox将系统挂载到U盘启动设置步骤
  4. 《小强升职记》读书笔记(附PDF下载地址)
  5. 怎么用python进行有限元分析_用python实现简单的有限元方法(二)
  6. 三星电视机服务器未响应,三星电视机维修服务系统
  7. 基于Javaee的珠宝购物网站的设计与实现
  8. Linux下svn服务端安装配置
  9. stm32毕业设计 智能指纹识别门禁系统 - 物联网 单片机
  10. 现代数字化x线摄影技术