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.rhkb.cn/news/426280.html

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

相关文章

【MySQL】MySQL和Workbench版本兼容问题

1、安装MySQL WorkBench 最新版本下载&#xff1a;https://dev.mysql.com/downloads/workbench/ 历史版本下载&#xff1a;https://downloads.mysql.com/archives/workbench/ 2、问题描述 本人在Windows下安装了一个旧版本的MySQL&#xff08;5.1&#xff09;&#xff0c;同…

【C++登堂入室】类与对象(上)

目录 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 八、this指针 …

物联网行业中小型嵌入式文件系统详解以及使用

一 概述 在嵌入式系统使用过程中&#xff0c;为了方便数据的存储&#xff0c;我们加入了串行的外部Flash(SPI通信)。在使用存储的时候&#xff0c;如需要记录一个字符串“奇迹物联Bloom OS”&#xff0c;我们可以把这些文字转化成 ASCII 码&#xff0c;存储在数组中&#xff0c…

Android Studio Menu制作

文章目录 一、创建菜单在Activity上新建onCreateOptionsMenu新建menu目录及资源文件新建Menu一级菜单在Activity上加载Menu测试效果 二、菜单点击事件 一、创建菜单 在Activity上新建onCreateOptionsMenu Overridepublic boolean onCreateOptionsMenu(Menu menu) {return supe…

Vue2电商平台项目 (三) Search模块、面包屑(页面自己跳自己)、排序、分页器!

文章目录 一、Search模块1、Search模块的api2、Vuex保存数据3、组件获取vuex数据并渲染(1)、分析请求数据的数据结构(2)、getters简化数据、渲染页面 4、Search模块根据不同的参数获取数据(1)、 派发actions的操作封装为函数(2)、设置带给服务器的参数(3)、Object.assign整理参…

【读论文】End-to-end reproducible AI pipelines in radiology using the cloud

文章目录 End-to-end reproducible AI pipelines in radiology using the cloud01 研究背景与目的医学成像领域&#xff08;1&#xff09;研究现状&#xff08;2&#xff09;存在问题 其他研究领域&#xff1a;基因组学&#xff08;genomics&#xff09;研究目的&#xff1a;提…

【数据库】MySQL-基础篇-事务

专栏文章索引&#xff1a;数据库 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、事务简介 二、事务操作 1.未控制事务 1.1 测试正常情况 1.2 测试异常情况 2.控制事务一 1.1 查看/设置事务提交方式 1.2 提交事务 1.3 回滚事务 3.控制事务二 1.1 开启事…

lvs-dr模式实验详解

华子目录 lvs-dr&#xff08;企业当中最常用&#xff09;dr模式数据逻辑dr模式数据传输过程dr模式的特点实验拓扑实验主机准备解决vip响应问题限制响应级别:arp_ignore限制通告级别:arp_announce 实验步骤1.client的ip设定2.router上的ip设定3.router开启路由转发功能4.lvs主机…

Eroded Mountains - Stamp Pack 山脉

这套邮票包含10幅高质量的高度图图像。这些邮票以严重侵蚀的山脉为特色,非常适合古代和史诗般的风景! 高品质邮票塑造您的地形! 每一个伟大的环境场景都始于一个空的平面。 这个邮票包包含10枚邮票,可以帮助你填补这个空白。这些邮票以严重侵蚀的山脉为特色,非常适合古代和…

C++:多态

目录 一.多态的概念 二.多态的定义及其实现 1.虚函数 2.虚函数的重写/覆盖 3.实现多态的条件 4.虚函数重写的例外 5.析构函数的重写 6.经典例题 7.C11 override和final关键字 8.重载、重写/覆盖、隐藏的区别 三.抽象类 四.多态的原理 1.虚函数表指针 2.多态如何实…

13 Midjourney从零到商用·实战篇:漫画设计一条龙

大家好&#xff0c;经过前面十三篇文章,相信大家已经对Midjourney的使用非常熟悉了&#xff0c;那么现在我们开始进行实际的项目操作啦&#xff0c;想想是不是有点小激动呀&#xff0c;本篇文章为大家带来Midjourney在漫画制作领域的使用流程&#xff0c;同样也适用于现在短视频…

[C语言]第十节 函数栈帧的创建和销毁一基础知识到高级技巧的全景探索

10.1. 什么是函数栈帧 我们在写 C 语言代码的时候&#xff0c;经常会把一个独立的功能抽象为函数&#xff0c;所以 C 程序是以函数为基本单位的。 那函数是如何调用的&#xff1f;函数的返回值又是如何待会的&#xff1f;函数参数是如何传递的&#xff1f;这些问题都和函数栈帧…

高德地图2.0 绘制、编辑多边形覆盖物(电子围栏)

1. 安装 npm i amap/amap-jsapi-loader --save移步&#xff1a;官方文档 2. map组件封装 <script lang"ts" setup> import AMapLoader from amap/amap-jsapi-loader import { onMounted, ref } from vue import { propTypes } from /utils/propTypesdefineO…

开发小程序

由于之前购入的阿里云ECS放着落灰&#xff0c;碰巧又看到个有趣的项目&#xff0c;于是就做了个生成头像的小程序…由于第一次完整发布小程序&#xff0c;记录一下遇到的问题 小程序名称&#xff1a;靓仔创意头像 &#x1f602; 关于小程序 接口请求&#xff0c;在开发过程中…

在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?

在 Mac 系统安装并使用双系统已经成为了许多用户办公的选择之一&#xff0c;双系统可以让用户在 Mac 上同时运行 Windows 或其他操作系统。然而&#xff0c;许多用户担心这样做会对 Mac 的性能产生影响。 接下来将给大家介绍 Mac 装双系统会影响性能吗&#xff0c;Mac装双系统…

C++速通LeetCode简单第20题-多数元素

方法一&#xff1a;暴力解法&#xff0c;放multiset中排序&#xff0c;然后依次count统计&#xff0c;不满足条件的值erase清除。 class Solution { public:int majorityElement(vector<int>& nums) {int ans 0;multiset<int> s;for(int i 0;i < nums.s…

孙怡带你深度学习(2)--PyTorch框架认识

文章目录 PyTorch框架认识1. Tensor张量定义与特性创建方式 2. 下载数据集下载测试展现下载内容 3. 创建DataLoader&#xff08;数据加载器&#xff09;4. 选择处理器5. 神经网络模型构建模型 6. 训练数据训练集数据测试集数据 7. 提高模型学习率 总结 PyTorch框架认识 PyTorc…

UE5安卓项目打包安装

Android studio安装 参考&#xff1a;https://docs.unrealengine.com/5.2/zh-CN/how-to-set-up-android-sdk-and-ndk-for-your-unreal-engine-development-environment/ 打开android studio的官网&#xff1a;Download Android Studio & App Tools - Android Developers …

深度学习-生成式检索-论文速读-2024-09-14

深度学习-生成式检索-论文速读-2024-09-14 前言: 生成式检索&#xff08;Generative Retrieval&#xff0c; GR&#xff09;是一种结合了生成模型和检索系统的人工智能技术方法。这种方法在处理信息检索任务时&#xff0c;不仅依赖于已有数据的检索&#xff0c;还能生成新的、…

解锁SQL无限可能 | 基于SQL实现的一种时序数据的波峰个数检测算法

目录 0 算法原理 1 数据准备 2 问题分析 3 小结 数字化建设通关指南专栏原价99&#xff0c;现在活动价39.9&#xff0c;按照阶梯式增长&#xff0c;直到恢复原价 0 算法原理 波峰识别算法 序列数据是按照时间进行采集&#xff0c;其中400个点一个周期&#xff0c;一条数据…