Qt 使用Installer Framework制作安装包

Qt 使用Installer Framework制作安装包

  • 引言
  • 一、下载安装 Qt Installer Framework
  • 二、简单使用
    • 2.1 创建目录结构 (文件夹结构)
    • 2.2 制作程序压缩包
    • 2.3 制作程序安装包

引言

Qt Installer Framework (安装程序框架)是一个强大的工具集,用于创建自定义的在线和离线安装程序。它具有高度可配置性和可自定义性,适用于所有支持的Qt平台:Linux、Windows和macOS。并且其提供了清晰的文档和示例,帮助开发人员为应用程序创建安装程序。

  • 本文以Windows为例,简述其制作一个软件安装包的步骤.

一、下载安装 Qt Installer Framework

官方下载地址:https://download.qt.io/official_releases/qt-installer-framework/
也可使用源码安装,可参考官方文档:https://doc.qt.io/qtinstallerframework/ifw-getting-started.html#building-from-sources

    1. 从官方下载的安装包,双击exe后无脑下一步即可
      在这里插入图片描述
    1. 配置环境变量
      在我的电脑上右键 > 属性 > 高级系统设置 > 环境变量 > 在Path中增加binarycreator.exe所在路径
      在这里插入图片描述
    1. 简单验证,在终端输入binarycreator.exe,显示如下图所示:
      在这里插入图片描述

二、简单使用

官方文档 Creating an Installer:https://doc.qt.io/qtinstallerframework/ifw-tutorial.html

2.1 创建目录结构 (文件夹结构)

    1. 创建相关目录以及配置文件,具体结构如下图所示:
      在这里插入图片描述
-config- config.xml
-packages- com.vendor.root- data- 程序压缩包 (包含可执行文件和依赖库等,支持7z, zip, tar.gz, tar.bz2 and tar.xz)- meta- 安装的软件模块说明 (package.xml等)

创建一个目录结构:比如创建一个目录叫InstallerTest。该目录必须包含名为configpackages的子目录。config下需包含config.xml配置文件。packages下可包含一个或多个程序 or 模块的目录 (安装时可选择安哪个),每个目录下又分为data (软件相关)和 meta(安装程序相关)

关于目录结构的说明可参考:
使用Qt Installer Framework制作软件安装包:https://www.cnblogs.com/xia-weiwen/p/6857333.html
官方说明文档 Package Directory:https://doc.qt.io/qtinstallerframework/ifw-component-description.html

    1. config.xml文件,其控制安装程序的欢迎安装文件夹开始菜单快捷方式等,如下图所示:
<?xml version="1.0" encoding="UTF-8"?>
<Installer><Name>软件名称</Name><Version>1.0.0</Version><Title>安装程序名称 - 会在安装程序的标题上显示</Title><Publisher>软件发布者</Publisher><StartMenuDir>在开始菜单中的默认目录名称</StartMenuDir><TargetDir>默认的安装目录</TargetDir>
</Installer>

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

还可以设置安装程序的颜色、Logo等
更多详细信息可参考:https://doc.qt.io/qtinstallerframework/ifw-globalconfig.html

    1. package.xml文件,其控制安装程序的选择组件许可协议等界面,如下图所示
<?xml version="1.0" encoding="UTF-8"?>
<Package><DisplayName>一个模块</DisplayName><Description>相关描述</Description><Version>1.0.0-1</Version><ReleaseDate>2024-07-01</ReleaseDate>
</Package>

在这里插入图片描述

还可以增加许可协议以及自定义UI界面
更多详细信息可参考:https://doc.qt.io/qtinstallerframework/ifw-component-description.html#package-information-file-syntax

2.2 制作程序压缩包

    1. 编译release版的程序,然后使用windeployqt复制相关库,如下图所示:
      在这里插入图片描述
    1. 压缩为7z, zip, tar.gz, tar.bz2 and tar.xz (可选)格式,放到相应的data目录下
      在这里插入图片描述

windeployqt的使用可参考:
Qt的windeployqt打包:https://blog.csdn.net/u014597198/article/details/77852483
Qt windeployqt.exe 打包qml:https://blog.51cto.com/u_15707179/6102502

2.3 制作程序安装包

完成上述准备工作之后,就可以执行命令制作安装包!

    1. 在对应的路径下执行binarycreator命令
      binarycreator -c config\config.xml -p packages MyInstaller.exe
      在这里插入图片描述
    1. 生成MyInstaller.exe,双击即可打开进行安装
      在这里插入图片描述
    1. 完结!

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

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

相关文章

JVM--HostSpot算法细节实现

1.根节点枚举 定义&#xff1a; 我们以可达性分析算法中从GC Roots 集合找引用链这个操作作为介绍虚拟机高效实现的第一个例 子。固定可作为GC Roots 的节点主要在全局性的引用&#xff08;例如常量或类静态属性&#xff09;与执行上下文&#xff08;例如 栈帧中的本地变量表&a…

SVN与Git功能差异对比分析

最近在调研学习Git管理和分支模型相关内容&#xff0c;外延到了SVN和Git差异、工作原理等相关细节&#xff0c;学习整理如下。 SVN&#xff08;Subversion&#xff09;与 Git 的最大不同&#xff0c;主要包括以下几个方面&#xff1a; 交流探讨&#xff0c;加入群聊【Java学习…

Docker搭建本地私有仓库

目录 1.下载运行registry 镜像 2.添加私有镜像仓库地址 3.为镜像添加标签 4.上传到私有仓库 5.查看私有仓库的所有镜像 6.测试私有仓库下载 1.下载运行registry 镜像 docker pull registry docker run -d -v /data/registry:/var/lib/registry -p 5000:5000 --restartal…

通过vue3 + TypeScript + uniapp + uni-ui 实现下拉刷新和加载更多的功能

效果图: 核心代码: <script lang="ts" setup>import { ref, reactive } from vue;import api from @/request/api.jsimport empty from @/component/empty.vueimport { onLoad,onShow, onPullDownRefresh, onReachBottom } from @dcloudio/uni-applet form …

消费金融系统开发回忆录

架构设计图 整个支付链路上的功能 支付系统应该有&#xff1a;账户管理、渠道管理、支付管理、对账管理、清算管理、结算管理 一笔支付订单&#xff0c;在支付系统侧就是要记录清楚&#xff0c;谁发起的、对哪个商品进行支付、通过哪个渠道支付、支付时间、支付结果等…

Unity XR Interaction Toolkit(VR、AR交互工具包)记录安装到开发的流程,以及遇到的常见问题(一)!

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、XR Interaction Toolkit是什么&#xff1f;二、跨平台交互三、 AR 功能四、XR Interaction Toolkit的特点五、XR Interaction Toolkit 示例总结 前言 随着VR行业的发展&#…

huawei USG6001v1学习---防火墙相关知识(2)

目录 1.安全策略 2.防火墙的状态检测和会话表技术 3.FTP 4.用户认证 5.认证策略 1.安全策略 传统包过滤技术 --- 其本质就是ACL访问控制列表&#xff0c;根据数据包的特征进行过滤&#xff0c;对比规则&#xff0c; 执行对应的动作&#xff1b; 这里数据包的特征 --- …

【Linux】编辑器vscode与linux的联动

1.vscode简单学习 vscode是编辑器&#xff0c;可以写各种语言的程序 下载链接&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 来用一下vscode 我们保存了就能在我们的那个文件夹里面看到这个 这个就是编辑器&#xff0c;跟我们的文本文件好像差不多&#…

LLaMA 数据集

LLaMA的训练数据集来源多样&#xff0c;涵盖了多个不同的数据集和预处理步骤。以下是详细的描述&#xff1a; 公开数据来源和预处理 CommonCrawl [67%]&#xff1a; 使用CCNet管道&#xff08;Wenzek等人&#xff0c;2020年&#xff09;对2017年至2020年间的五个CommonCrawl转…

【大模型】FAISS向量数据库记录:从基础搭建到实战操作

文章目录 文章简介Embedding模型BGE-M3 模型亮点 FAISS是什么FAISS实战安装faiss加载Embedding模型创建FAISS数据库搜索FAISS数据删除FAISS数据保存、加载FAISS索引 总结 本人数据分析领域的从业者&#xff0c;拥有专业背景和能力&#xff0c;可以为您的数据采集、数据挖掘和数…

基于java的设计模式学习

PS &#xff1a;以作者的亲身来看&#xff0c;这东西对于初学者来说有用但不多&#xff0c;这些东西&#xff0c;更像一种经验的总结&#xff0c;在平时开发当中一般是用不到的&#xff0c;因此站在这个角度上用处不大。 1.工厂模式 1.1 简单工厂模式 我们把new 对象逻辑封装…

FastAPI 学习之路(五十九)封装统一的json返回处理工具

在本篇文章之前的接口&#xff0c;我们每个接口异常返回的数据格式都不一样&#xff0c;处理起来也没有那么方便&#xff0c;因此我们可以封装一个统一的json。 from fastapi import status from fastapi.responses import JSONResponse, Response from typing import Unionde…

java项目(knife4j使用,静态资源未放在static资源包下,公共字段自动填充,Spring Cache与Spring Task)

Knife4j&#xff08;生成接口文档&#xff09; 使用swagger你只需要按照它的规范去定义接口及接口相关的信息&#xff0c;就可以做到生成接口文档&#xff0c;以及在线接口调试页面。官网:https://swagger.io/ Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。…

huawei USG6001v1学习----NAT和智能选路

目录 1.NAT的分类 2.智能选路 1.就近选路 2.策略路由 3.智能选路 NAT:&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09; 指网络地址转换&#xff0c;1994年提出的。NAT是用于在本地网络中使用私有地址&#xff0c;在连接互联网时转而使用全局…

[GIS实验]居住环境适宜性评价

目的&#xff1a; 拟购买住宅&#xff0c;需在现有条件下&#xff0c;基于地理空间分析方法和空间认知模型对居住环境进行综合评价。通过该实验掌握基于GIS的地理空间认知方法及土地适宜性评价基本原理与方法。 数据&#xff1a; &#xff08;1&#xff09;人口调查图&#…

arcgis怎么选取某个指定区域地方的数据,比如从全国乡镇数据选取长沙市乡镇数据

一共5个步骤&#xff0c;没一句废话&#xff0c;耐心看完。 1、如图&#xff0c;先将数据加载到arcgis里面&#xff0c;我们要选取里面长沙市的范围数据。 2、选取长沙市的语句 “市” like ‘长沙%’ 切记&#xff0c;切记&#xff0c;切记。所有符号要在 输入法英文状态…

FPGA:二选一选择器

1、需求 使用XILINX的XC7A35TFFG484-2开发板&#xff0c;完成二选一选择器的设计。 2、分析 二选一选择器如下所示&#xff1a; 观察可知有三个输入端&#xff0c;一个输出端&#xff0c;其逻辑原理为&#xff1a;当sel为高电平时&#xff0c;outa&#xff0c;当sel为低电平…

深入理解Linux网络(三):TCP对象创建

深入理解Linux网络&#xff08;三&#xff09;&#xff1a;TCP对象创建 TCP对象创建inet_createsock_init_data TCP对象创建 常见的三句TCP编程&#xff1a; int main() {int sk socket(AF_INET, SOCK_STREAM, 0);connect(sk, ...)recv(sk, ...) }简单的两三⾏代码&#xff…

深度学习程序环境配置

深度学习环境配置 因为之前轻薄本没有显卡跑不起来&#xff0c;所以换了台电脑重新跑程序&#xff0c;故记录一下配置环境的步骤及常见错误 本人数学系&#xff0c;计算机部分知识比较匮乏&#xff0c;计算机专业同学可以略过部分内容 深度学习环境配置 深度学习环境配置 CUD…

组内第一次会议

会议内容 1、科研平台使用 增删改查对文件 cp -r /root/mmdetection/dataset/ /root/user/wbzExperiment/mmdetection/ rm -r /root/user/yolov5-master tar -czvf test03.tar.gz test03/ unzip abc.zip 上传文件、解压文件&#xff1a;要在自己的目录中&#xff0c;进入…