QT程序的安装包制作教程

news/2024/12/30 11:19:06/

在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.ppmy.cn/news/1527271.html

相关文章

校园社团|基于springBoot的校园社团信息管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信…

关于前后端跨域访问的问题

在vue项目的vue.config.js配置文件里面添加下面的内容 http://localhost:8080这是后端tomcat端口&#xff0c;将后端的路径的tomcat端口换成/api

python数据分析知识点大全

Python数据分析知识点大全可以归纳为以下几个主要方面&#xff1a; 一、基础概念与目的 数据分析定义&#xff1a;数据分析是指用适当的统计分析方法对收集来的大量数据进行分析&#xff0c;提取有用信息和形成结论&#xff0c;对数据加以详细研究和概括总结的过程。其目的在…

34.贪心算法1

0.贪心算法 1.柠檬水找零&#xff08;easy&#xff09; . - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 代码 class Solution {public boolean lemonadeChange(int[] bills) {int five 0, ten 0;for (int x : bills) {if (x 5) // 5 元&#xff1a;直接收下…

基于微信小程序的科创微应用平台设计与实现+ssm(lw+演示+源码+运行)

基于微信小程序的科创微应用平台 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于微信小程序的科创微应用平台的开发全过程。通过分析基于微信小程序的科创微应用平台管理的不足&#xff0c;创建了一个计…

基于PSO-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 PSO粒子群优化 4.2 svm 4.3 PSO-SVM 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) pso优化SVM过程&#xff1a; 识别率对比&#xff1a; 2.算法运行软件版本 …

docker如何实现资源隔离

Docker 通过多种机制实现了资源隔离&#xff0c;这些机制包括命名空间&#xff08;namespaces&#xff09;、控制组&#xff08;control groups, cgroups&#xff09;以及其他容器相关的技术。下面详细介绍 Docker 如何使用这些技术来实现资源隔离。 1. 命名空间&#xff08;N…

一步到位:通过 Docker Compose 部署 EFK 进行 Docker 日志采集

一、EFK简介 Elasticsearch&#xff1a;一个开源的分布式搜索和分析引擎&#xff0c;用于存储和查询日志数据。它是 EFK 的核心组件&#xff0c;负责高效地存储和检索日志信息。 Filebeat&#xff1a;一个轻量级的日志采集器&#xff0c;主要用于将日志文件数据发送到 Logsta…