序言

当我们完成了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版本的文件容量小得多。

Qt库

生成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)。

打开Qt编译器
在终端中,切换到文件夹目录,如: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的脚本文件,先把这个脚本保存下来,然后点击运行,自动生成软件安装包的工作就开始了。
    等待一会,安装包就生成好了。

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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐