QT程序的安装包制作教程

在Windows平台上开发完qt c++桌面应用程序以后,需要制作一个安装包,方便生产和刻盘交货,本文记录相关流程。

目录

一、安装Qt Installer Framework 

二、准备可执行程序 

2.1 生成Release程序

2.2 完成依赖库拷贝

三、创建安装包程序


一、安装Qt Installer Framework 

Qt Installer Framework是Qt官方提供的一组工具和实用程序,用于创建安装程序,可以在所有受支持的桌面Qt平台上完成安装包制作,无需重写源代码。具体受支持平台包括:Linux,Windows和OS X。

下载链接:Index of /official_releases/qt-installer-framework 

打开以后选择一个较新的版本即可,本文选择的是4.8.0,如下图所示:

单击进入下载详情页面。由于本文是在windows平台上制作,因此选择exe程序进行下载,如下图所示:

下载完成后双击该安装包,按照提示默认安装即可完成(安装路径中不要出现中文或特殊符号)。本文将其安装在了下面的路径:

D:\toolplace\qt_installer_framework

二、准备可执行程序 

2.1 生成Release程序

先要在release模式下编译运行程序,生成release版本,也就是发布版本。在release文件下找到可执行文件exe,一般路径如下所示

E:\Qt_Project\build-faceEval-Desktop_Qt_5_15_2_MSVC2019_64bit-Release\release\faceEval.exe

然后把这个exe文件单独拷贝到一个空的文件夹中,如下所示(路径中不要出现中文):

D:\project\faceEval.exe

2.2 完成依赖库拷贝

接下来使用Qt自带的打包工具windeployqt对应用程序进行打包,其本质就是把一些Qt的库或者依赖项添加进行来。

从电脑左下角的开始菜单打开Qt的命令行界面Qt 5.15.2 (MSVC 2019 64-bit),如下图所示:

输入命令如下:

windeployqt D:\project\faceEval.exe

这时候qt会自动将依赖的qt库文件导入到新建的文件夹下面。如果开发的程序还依赖其它第三方库(非qt),比如OpenCV,那么就把对应需要的相关dll文件或资源导入到新建的文件夹下面。

最后双击可执行程序验证下能否正常启动,运行是否正常。

三、创建安装包程序

Qt Installer Framework安装目录的examples文件夹下面有很多的安装程序实例,可以将其复制一份出来。本文使用的示例是D:\toolplace\qt_installer_framework\examples\startmenu。将整个的startmenu复制一份出来。

首先将第二步整理出来的文件全部复制到startmenu\packages\org.qtproject.ifw.example\data文件夹里,注意是和exe同一级目录的所有文件。

接下来修改配置文件,在startmenu/config目录下,有一个config.xml文件,使用文本编辑器打开,根据自己的需求进行修改,如下图所示:

<?xml version="1.0" encoding="UTF-8"?>
<Installer><Name>智能识别程序</Name><Version>1.0</Version><Title>智能识别程序——安装向导</Title><Publisher>微星技术开发有限公司</Publisher><!-- Directory name is used in component.xml --><StartMenuDir>智能识别程序</StartMenuDir><TargetDir>@HomeDir@/det</TargetDir>
</Installer>

相关定义如下:

  •  < Name> 软件名称
  • < Version> 版本号
  • < Title> 安装程序窗口标题
  • < Publisher> 发布者名称
  • < StartMenuDir> 要生成的windows开始菜单目录
  • < TargetDir> 默认安装路径

接下来修改包信息文件,找到startmenu\packages\org.qtproject.ifw.example\meta下package.xml文件,使用文本编辑器打开,根据自己的需求进行修改,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Package><DisplayName>README.txt</DisplayName><Description>A README.txt, accessible through a start menu entry.</Description><Version>V1.0</Version><ReleaseDate>2024-09-01</ReleaseDate><Default>true</Default><Script>installscript.qs</Script>
</Package>

相关说明如下:

  • < DisplayName> 显示的名称
  • < Description> 描述
  • < Version> 部件的版本号
  • < ReleaseDate> 发行日期
  • < Licenses> 许可信息名称以及许可文件名
  • <Default>默认是否选中协议
  • < Script> 脚本文件
  • < UserInterfaces> 额外的界面(如果需要的话,而且需要去installscript.qs中配置)

最后修改qs文件,找到startmenu\packages\org.qtproject.ifw.example\meta下installscript.qs文件,使用文本编辑器打开,根据自己的需求进行修改,如下所示:

function Component()
{// default constructor
}Component.prototype.createOperations = function()
{// call default implementation to actually install README.txt!component.createOperations();if (systemInfo.productType === "windows") {component.addOperation("CreateShortcut", "@TargetDir@/faceEval.exe", "@StartMenuDir@/智能识别程序.lnk","workingDirectory=@TargetDir@", "iconPath=%SystemRoot%/system32/SHELL32.dll","iconId=2", "description=Open README file");component.addOperation("CreateShortcut", "@TargetDir@/faceEval.exe", "@DesktopDir@/智能识别程序.lnk");}
}

到这里准备工作就基本完成了。接下来添加环境变量,将Qt Installer Framework安装文件下的bin路径添加到系统环境变量中。

从电脑左下角的开始菜单打开Qt的命令行界面Qt 5.15.2 (MSVC 2019 64-bit),然后通过cd命令进入到startmenu目录,输入下面的命令完成制作:

binarycreator.exe -c config/config.xml -p packages install.exe -v

然后在startmenu目录下就会生成安装包了,如下图所示:

后面只需要把这个install.exe刻盘交给用户即可,用户双击这个安装包就能正常安装软件了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C到C++入门基础知识

一&#xff1a;命名空间&#xff1a;namespace &#xff08;一&#xff09;&#xff1a;命名空间的定义 注&#xff1a;命名空间只能定义在全局&#xff0c;不能定义在函数内部。 &#xff08;1&#xff09;类似于C语言的结构体&#xff0c;C语言的命名空间定义为&#xff1…

在 Mac 上安装虚拟机怎么样,安装虚拟机与直接安装 Windows 系统有区别吗?

随着跨系统操作的不断发展&#xff0c;虚拟机技术在生产力领域扮演着越来越重要的角色。Mac作为一款主流的操作系统&#xff0c;也有着运行虚拟机的能力。接下来给大家介绍Mac装虚拟机好不好&#xff0c;Mac装虚拟机和装Windows系统一样吗的具体内容。 Mac装虚拟机好不好 Mac…

大屏地图区域显示、复选框多选打点,自定义窗体信息(vue3+TS)

效果图&#xff1a; NPM 安装 Loader&#xff1a; npm i amap/amap-jsapi-loader --save 并设置 key 和安全密钥&#xff1a; import AMapLoader from amap/amap-jsapi-loader;//引入高德地图window._AMapSecurityConfig {securityJsCode: "「你申请的安全密钥」"…

基于YOLO深度学习和百度AI接口的手势识别与控制项目

基于YOLO深度学习和百度AI接口的手势识别与控制项目 项目描述 本项目旨在开发一个手势识别与控制系统&#xff0c;该系统能够通过摄像头捕捉用户的手势&#xff0c;并通过YOLO深度学习模型或调用百度AI接口进行手势识别。识别到的手势可以用来控制计算机界面的操作&#xff0…

单机docker-compose部署minio

单机多副本docker-compose部署minio 简单介绍 如果服务器有限可以单机挂载多硬盘实现多副本容错&#xff08;生产不推荐&#xff09; 部署好的文件状态 有两个重要文件 docker-compose.yaml和nginx.conf docker-compose.yaml是docker部署容器的配置信息包括4个minio和1个ng…

[数据集][目标检测]男女性别检测数据集VOC+YOLO格式9769张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;9769 标注数量(xml文件个数)&#xff1a;9769 标注数量(txt文件个数)&#xff1a;9769 标注…

Miracast/WifiDisplay开发相关的深入调研分析-android投屏实战开发

Miracast/WifiDisplay概念介绍 Miracast Miracast是由Wi-Fi联盟于2012年所制定&#xff0c;以Wi-Fi直连&#xff08;Wi-Fi Direct&#xff09;为基础的无线显示标准。支持此标准的消费性电子产品&#xff08;又称3C设备&#xff09;可透过无线方式分享视频画面&#xff0c;例如…

CSS学习17--CSS3 过渡、2D变形、3D变形、动画

CSS3 过渡、2D变形、3D变形、动画 一、过渡二、2D变形 transform1.移动 translate2.缩放 scale3. 旋转 rotate4. 倾斜 skew 三、3D变形1. rotateX&#xff08;&#xff09;rotateY&#xff08;&#xff09; rotateZ&#xff08;&#xff09;2. 体会透视 perspective3. translat…

虚拟现实智能家居实训系统实训解决方案

随着科技的飞速发展&#xff0c;智能家居已成为现代生活的重要组成部分&#xff0c;它不仅极大地提升了居住的便捷性与舒适度&#xff0c;还推动了物联网、大数据、人工智能等前沿技术的融合应用。为了满足市场对智能家居专业人才日益增长的需求&#xff0c;虚拟现实智能家居实…

搭建 WordPress 及常见问题与解决办法

浪浪云活动链接 &#xff1a;https://langlangy.cn/?i8afa52 文章目录 环境准备安装 LAMP 堆栈 (Linux, Apache, MySQL, PHP)配置 MySQL 数据库 安装 WordPress配置 WordPress常见问题及解决办法数据库连接错误白屏问题插件或主题冲突内存限制错误 本文旨在介绍如何在服务器上…

Linux下vscode配置C++和python编译调试环境

Visual Studio Code (简称 VSCode) 是由微软开发的一款免费、开源、跨平台的代码编辑器。它支持 Windows、macOS 和 Linux 操作系统&#xff0c;并且内置对多种编程语言的支持&#xff0c;包括但不限于 C/C、Python、JavaScript、TypeScript、Java 和 Go 等。VSCode 主要用于编…

HarmonyOS ArkUI 构建布局

文章目录 一、构建布局1.线性布局 (Row/Column)1.1 Blank空白填充组件1.2 layoutWeight 自适应缩放1.3 自适应延伸 2.弹性布局 (Flex)3.栅格布局 (GridRow/GridCol)3.创建列表 (List) 一、构建布局 1.线性布局 (Row/Column) 线性布局文档 通过线性容器Row和Column构建 Column…

SpringBoot项目获取统一前缀配置以及获取非确定名称配置

SpringBoot项目获取统一前缀配置以及获取非确定名称配置 在SpringBoot项目中&#xff0c;我们经常看到统一前缀的配置&#xff0c;我们该怎么统一获取 my.config.a.namexiaoming my.config.a.age18 my.config.a.addressguangdong my.config.b.namexiaomli my.config.b.age20 my…

《深度学习》OpenCV 高阶 图像金字塔 用法解析及案例实现

目录 一、图像金字塔 1、什么是图像金字塔 2、图像金字塔作用 1&#xff09;金字塔尺度间的图像信息补充 2&#xff09;目标检测与识别 3&#xff09;图像融合与拼接 4&#xff09;图像增强与去噪 5&#xff09;图像压缩与编码 二、用法解析 1、向下采样 1&#xff09;概念…

使用SQL语句查询MySQL数据表

6.1 创建单表基本查询 1&#xff0e;Select 语句的语法格式及其功能 &#xff08;1&#xff09;Select 语句的一般格式。 Select < 字段名称或表达式列表 > From < 数据表名称或视图名称 > [ Where < 条件表达式 > ] [ Group By < 分组的字段名称…

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示 $str $_GET["name"]; //接受URL来的get形式的name传参 echo "<h2 aligncenter>欢迎用户".$str."</h2>";//在网页输出&#x…

STM32 之 SDRAM 详解

目录 前言 一、SDRAM 简介 二、SDRAM的组成原理 2.1存储单元阵列 2.1.1地址译码 2.1.2存储电容 2.2控制逻辑 2.2.1时钟同步 2.2.2命令解码 2.2.3模式寄存器 2.3数据输入 / 输出缓冲 2.3.1数据总线 2.3.2数据锁存 2.4刷新电路 2.4.1自动刷新 2.4.2自刷新 三、S…

SaaS化多租户实现的两种方法

SaaS化多租户实现的两种方法 SaaS系统的定义 SaaS&#xff0c;全称为Software-as-a-Service&#xff08;软件即服务&#xff09;&#xff0c;是一种基于云计算的软件交付模式。而SaaS系统&#xff0c;即是通过这种模式提供给用户的软件系统。即多租户系统&#xff0c;每个租户…

腾讯云升级多个云存储解决方案 以智能化存储助力企业增长

9月6日&#xff0c;在腾讯数字生态大会腾讯云储存专场上&#xff0c;腾讯云升级多个存储解决方案&#xff1a;Data Platform 数据平台解决方案重磅发布&#xff0c;数据加速器 GooseFS、数据处理平台数据万象、日志服务 CLS、高性能并行文件存储 CFS Turbo 等多产品全新升级&am…

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性&#xff0c;它是ES11&#xff08;ES2020&#xff09;中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时&#xff0c;会短路&#xff0c;直接返回undefined&#xff0c;如果存在&#xff0c;那么…