Qt之程序发布以及打包成exe安装包

2023-11-11

1 简述
Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以发布了。
Inno Setup为一款开源的软件。
2 设置应用程序图标
2.1 图标文件
我们编译好生成的 exe 文件的图标是 Qt 自带的一个白色的框框,不太好看。所以,我们可以自定义图标。先创建一个 ico 格式的文件,网上有很多在线就可以把 png 或 jpg 的图片转成 ico 格式的图标文件,然后把 ico 文件放到源代码目录下,就是 .pro 文件的同一文件夹下 如图:
在这里插入图片描述
2.2 添加配置文件
在.pro项目文件中添加:
RC_ICONS = EncryptionSoftware.ico // 这里的EncryptionSoftware.ico是我的ico文件的名字,改成你自己的ico文件名
如图:

在这里插入图片描述
2.3 编译
添加完后一定要重新 qmake 一遍,然后再运行一遍你的程序,这样再看你的 debug 或者 release 文件夹下的 exe 文件就会有你设置好的图标了。
如图:
在这里插入图片描述
3 发布程序
3.1 获得依赖库
发布程序首先要获得所依赖的 dll 文件,这里有两种方法。
方法一就是去 Qt 安装目录的 bin 目录(我的是D:\QT5.12\5.12.0\mingw73_64)中找所依赖的 dll 文件。
方法二就是使用 Qt 自带的发布程序工具 windeployqt.exe,可以生成所依赖的 dll 文件。这里着重讲解第二种方法,步骤如下:
3.1.1 Release 方式编译生成 exe 程序
Release 方式编译生成 exe 程序,也就是调试运行的方式选择 Release
在这里插入图片描述
运行成功后,在release 文件夹下生成 exe 文件。
3.1.2 运行cmd
将 EncryptionSoftware.exe 可执行文件复制到别的文件夹下,然后在 “开始菜单Qt5.12.0” 下找到 “Qt 5.12.0 for Desktop cmd” 运行文件,打开运行。
在这里插入图片描述
3.1.3 执行命令
进入放EncryptionSoftware.exe可执行文件的目录,执行windeployqt EncryptionSoftware.exe 命令,Qt 就会自动把该程序所需要的所有 dll 拷贝过来。
在这里插入图片描述

4 打包程序
Inno Setup 是一个免费的 Windows 安装程序制作软件,小巧、简便、精美是其最大特点,支持 pascal 脚本,能快速制作出标准 Windows2000 风格的安装界面,足以完成一般安装任务。
官方下载地址:http://www.jrsoftware.org/isdl.php#stable
下载后直接安装即可。
项目开发完成之后,需要打包程序发行,可以使用 Inno Setup 软件制作安装 exe。以下详细讲解如何打包应用程序:
4.1 新建文件
打开 Inno Setup Complier,点击 【file】→【new】,新建一个脚本向导程序,然后点击【next】;如图:
在这里插入图片描述
4.2 输入信息
在应用程序信息中输入 “应用程序名称”、“应用程序版本”、“应用程序发布者”、“应用程序网站”,这些信息会自动在脚本中生成,然后点击下一步;
在这里插入图片描述

4.3 输出地址以及输出文件夹的名称
自定义打包文件的的输出地址以及输出文件夹的名称,然后点击下一步

在这里插入图片描述
4.4 选择主执行文件和库文件
选择应用程序的主执行文件,也就是你编译生成的 exe 文件,下面点击 “Add folder ”,把所有你的程序运行需要的 dll 和资源以及配置文件放在一个文件夹里,选择这个文件夹,然后点击下一步;
在这里插入图片描述
注:Add folder 添加 .exe 的父文件夹,将依赖的 dll 等文件全部包含在内。
4.5 应用程序显示名字和功能
输入应用程序在开始菜单中显示的名字,需要哪些功能,在前边打上对勾,一般默认即可,然后点击下一步;
在这里插入图片描述
4.6 软件相关文件
这里可以选择 “许可文件”,“安装前的文件”(如 Readme 文件等),“安装后显示信息” 等,然后点击下一步;
在这里插入图片描述
4.7 安装语言
选择 “安装语言”,然后点击下一步;

在这里插入图片描述
4.8 自定义文件的输出信息
选择 “自定义编译器输出文件夹”、“编译器输出基本文件名”、“自定义的安装程序图标文件”及“安装密码”,然后点击下一步
在这里插入图片描述
4.9 是否使用 #define 编译指令
在这里选择是否使用 #define 编译指令,选择 yes 也就是在生成的脚本里使用 #define 宏定义一些常量,方便脚本编写,勾不勾选随意,然后点击下一步;

在这里插入图片描述
在这里插入图片描述

前面最后一步中间会询问你是否立即编译新的脚本,这个脚本是根据刚才我们前面填写的那些内容自动生成的。可以直接使用编译,也可以自己重新编写,下面贴出生成的脚本代码。
在这里插入图片描述

5 安装
5.1 选择语言
在这里插入图片描述
5.2 输入密码
在这里插入图片描述
5.3 readme.txt的内容
在这里插入图片描述
5.4 选择安装位置
选择合适的安装位置进行安装
在这里插入图片描述
5.5 安装完毕
在这里插入图片描述

桌面快捷方式如图:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt之程序发布以及打包成exe安装包 的相关文章

随机推荐

  • 利用Fastjson进行泛型的序列化和反序列化

    public class SerialClass
  • qt下QString转换为const char*字符串

    概述 本文直在说明将QString类型的变量转换为const char 类型 实现 可以采用下面的方式来实现 QString toStdString c str 示例 下面是一个示例 const QString msg nis你好 cons
  • 10个Python爬虫入门实例,建议收藏!!

    1 爬取强大的BD页面 打印页面信息 第一个爬虫示例 爬取百度页面 import requests 导入爬虫的库 不然调用不了爬虫的函数 response requests get http www baidu com 生成一个respon
  • STM32 之八 在线升级(IAP)超详细图解 及 需要注意的问题解决

    IAP 是啥 IAP In Application Programming 即在应用编程 也就是用户可以使用自己的程序对MCU的中的运行程序进行更新 而无需借助于外部烧写器 其实ST官网也给出了IAP的示例程序 感兴趣的可以直接去官网搜索
  • 【PHPMailer SMTP connect() failed】

    PHPMailer发送邮件 报错 SMTP connect failed 第一种情况 端口问题 现在一般使用的就是ssl的端口465 第二种情况 参数里面有一个password参数 注意这里是授权码 不是邮箱登录密码
  • 3、34道MySQL练习题及答案

    作业 取得每个部门最高薪水的人员名称 第一步 取得每个部门最高薪水 按照部门编号分组 找出每一组最大值 select deptno max sal maxsal from emp group by deptno deptno maxsal
  • 微信小程序项目 npm安装构建

    project config json文件 setting 中增加 packNpmManually true packNpmRelationList packageJsonPath package json miniprogramNpmDi
  • 【笔记总结】C陷阱与缺陷

    第一章 词法 陷阱 是赋值运算符 是比较运算符 赋值运算符的优先级要低于逻辑运算符 和 的优先级要高于 运算符 比较运算符的结果只可能是0或者1 不可能小于0 字符是用单引号引起的实际代表一个整数 整数值对应于该字符在编译器采用的字符集的序
  • Zabbix 监控 CPU 使用率

    system cpu util
  • Delphi2009控件的安装

    delphi2009控件的安装和delphi7的有很大的差别 1 控件包 File gt Open gt 打开控件的包文件 gt project manager gt 右键 gt Install 2 PAS文件 New gt Package
  • 红帽Redhat—Linux基本命令行使用

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 什么是shell 二 基本命令 1 命令访问 2 参数 命令的作用对象 3 配置主机名 4 修改系统语言 5 用户名密码管理 6 cat 7 rm 删除文件命令
  • linux sh查看wifi状态,adb结合wpa_cli查看wifi状态命令集

    1 status 查看当前的WIFI状态 adb shell wpa cli iwlan0 g android wpa wlan0 IFNAME wlan0 status bssid 70 62 b8 62 2e c4 一个长度为48位二进
  • LR为什么用sigmoid函数,这个函数有什么优点和缺点?为什么不用其他函数?

    一 功能的基本性质 首先 Sigmoid的公式形式 公式图像 该函数的基本属性 定义域 值范围 1 1 1 1 函数是域内的连续且平滑的函数 它可以在任何地方被引导 并且导数是 f x f x 1 f x 最早的Logistic功能由Pie
  • python如何实现可视化热力图

    这篇文章主要介绍了python如何实现可视化热力图 小编觉得挺不错的 现在分享给大家 也给大家做个参考 一起跟随小编过来看看吧 热力图 1 利用热力图可以看数据表里多个特征两两的相似度 参考官方API参数及地址 seaborn heatma
  • IC617

    tip 个人日常笔记 解决的问题 导入一个由很多MOS晶体管组成的cdl网表 网表部分内容如下图所示 SUBCKT 512x2ESDA8 指的是 接下来将对512x2ESDA8这一模块进行定义 紧跟在后面的 A 8 A 7 是对这一模块管脚
  • 【Java多数据源实现教程】实现动态数据源、多数据源切换方式

    前言 本文为 Java多数据源实现教程 相关知识 由于自己最近在做导师的项目的时候需要使用这种技术 于是自学了相关技术原理与实现 并将其整理如下 具体包含 多数据源的典型使用场景 包含业务复杂场景 读写分离场景 多数据源实现原理及实现方法
  • JavaScript教程,零基础到入门,switch语句,case分组,类型,函数声明,局部变量,外部变量,参数,返回值,函数命名,

    switch 语句 switch 语句可以替代多个 if 判断 switch 语句为多分支选择的情况提供了一个更具描述性的方式 语法 switch 语句有至少一个 case 代码块和一个可选的 default 代码块 就像这样 switch
  • go 使用方式

    一 GO基本概念 Go是一个开源的编程语言 它能让构造简单 可靠且高效的软件变得容易 Go是从2007年末由Robert Griesemer 罗伯特 格利茨默 Rob Pike 罗伯 派克 gt Ken Thompson 肯 汤普森 主持开
  • C++预处理器

    预处理器是一些指令 指示编译器在实际编译之前所需完成的预处理 所有的预处理器指令都是以井号 开头 只有空格字符可以出现在预处理指令之前 不会以分号 结尾 define 预处理 define 预处理指令用于创建符号常量 该符号常量通常称为宏
  • Qt之程序发布以及打包成exe安装包

    1 简述 Qt 项目开发完成之后 需要打包发布程序 而因为用户电脑上没有 Qt 配置环境 所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中 然后再用 Inno Setup 打包工具打包成一个 exe