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://xiahunao.cn/news/3247107.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】PostMessage:分析JS实现XSS

未经许可&#xff0c;不得转载。 文章目录 前言示例正文 前言 PostMessage是一个用于在网页间安全地发送消息的浏览器 API。它允许不同的窗口&#xff08;例如&#xff0c;来自同一域名下的不同页面或者不同域名下的跨域页面&#xff09;进行通信&#xff0c;而无需通过服务器…

【线程系列之五】线程池介绍C语言

一、基本概念 1.1 概念 线程池&#xff08;Thread Pool&#xff09;是一种基于池化技术管理线程的机制&#xff0c;旨在减少线程创建和销毁的开销&#xff0c;提高系统资源的利用率&#xff0c;以及更好地控制系统中同时运行的线程数量。线程池通过预先创建一定数量的线程&am…

Qt模型/视图架构——委托(delegate)

一、为什么需要委托 模型&#xff08;model&#xff09;用来数据存储&#xff0c;视图&#xff08;view&#xff09;用来展示数据。因此&#xff0c;模型/视图架构是一种将数据存储和界面展示分离的编程方法。具体如下图所示&#xff1a; 由图可知&#xff0c;模型向视图提供数…

Python | Leetcode Python题解之第238题除自身以外数组的乘积

题目&#xff1a; 题解&#xff1a; class Solution:def productExceptSelf(self, nums: List[int]) -> List[int]:length len(nums)# L 和 R 分别表示左右两侧的乘积列表L, R, answer [0]*length, [0]*length, [0]*length# L[i] 为索引 i 左侧所有元素的乘积# 对于索引为…

一文掌握Prometheus实现页面登录认证并集成grafana

一、接入方式 以保护Web站点的访问控制&#xff0c;如HTTP 服务器配置中实现安全的加密通信和身份验证&#xff0c;保护 Web 应用程序和用户数据的安全性。 1.1 加密密码 通过httpd-tools工具包来进行Web站点加密 yum install -y httpd-tools方式一&#xff1a;通过htpasswd生…

人工智能 (AI) 应用:一个异常肺呼吸声辅助诊断系统

关键词&#xff1a;深度学习、肺癌、多标签、轻量级模型设计、异常肺音、音频分类 近年来&#xff0c;流感对人类的危害不断增加&#xff0c;COVID-19疾病的迅速传播加剧了这一问题&#xff0c;导致大多数患者因呼吸系统异常而死亡。在这次流行病爆发之前&#xff0c;呼吸系统…

【时时三省】(C语言基础)变量

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 变量 可以改变的量 比如 int age&#xff1d;20 &#xff08;类型 变量的名字&#xff1d;0&#xff09; 如果后面要改可以直接代入 age&#xff1d;age1 age可以是任何字母 变量的分类…

微信小游戏 彩色试管 倒水游戏 逻辑 (四)

最近开始研究微信小游戏&#xff0c;有兴趣的 可以关注一下 公众号&#xff0c; 记录一些心路历程和源代码。 定义了一个名为 WaterFlow class&#xff0c;该类继承自 cc.Graphics&#xff0c;用于在 Cocos Creator 中创建和显示水流的动画效果。下面是对代码的详细解释&#x…

Qt实现简单的导航进度条——自定义控件

导航进度条通过其动态的视觉效果&#xff0c;‌不仅提供了任务进度的实时反馈&#xff0c;‌还增强了用户体验的流畅性和直观性。‌“进度”的设计方式多种多样&#xff0c;不同种类的运用需要根据具体场景来规划具体的进度方式&#xff0c;一般都要在清楚了解了每个方式的设计…

MySQL数据库慢查询日志、SQL分析、数据库诊断

1 数据库调优维度 业务需求&#xff1a;勇敢地对不合理的需求说不系统架构&#xff1a;做架构设计的时候&#xff0c;应充分考虑业务的实际情况&#xff0c;考虑好数据库的各种选择(读写分离?高可用?实例个数?分库分表?用什么数据库?)SQL及索引&#xff1a;根据需求编写良…

JavaEE--JavaWeb服务器的安装配置(Tomcat服务器安装配置)

前言: 本文介绍了 Java Web 服务器 Tomcat 的安装配置&#xff0c;并详细说明了如何在 IntelliJ IDEA 中配置服务器&#xff0c;创建 JavaEE 项目&#xff0c;并发布文章。文章首先解释了前端程序如何访问后端程序以及 Web 服务器的概念&#xff0c;然后详细介绍了安装 Tomcat…

各地跨境电子商务示范区工具变量DID数据(2010-2022年)

数据来源&#xff1a;参考李震等&#xff08;2023&#xff09;的做法&#xff0c;从官方网站上搜集整理了我国跨境电子商务示范区名单与上市公司进行匹配制作。时间跨度&#xff1a;2010-2022年数据范围&#xff1a;上市企业包含指标&#xff1a; stock year 证券简称 In…

大模型RAG优化方案与实践(非常详细)从入门到精通,看这一篇就够了

RAG通过检索现有的大量知识&#xff0c;结合强大的生成模型&#xff0c;为复杂的问答、文本摘要和生成任务带来了全新的解决方案。本文详细的介绍了RAG遇到的挑战、通用范式、工程实践、优化实现策略等。 一、RAG的背景介绍 随着ChatGPT的兴起&#xff0c;大语言模型再次走进…

伪分布式部署 DolphinScheduler

1.添加用户 useradd dolphinscheduler echo "dolphinscheduler" | passwd --stdin dolphinscheduler sed -i $adolphinscheduler ALL(ALL) NOPASSWD: NOPASSWD: ALL /etc/sudoers sed -i s/Defaults requirett/#Defaults requirett/g /etc/sudoers chown -R …

7.17IO

1. #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); 功能描述&#xff1a;打开name文件夹&#xff0c;返回该文件夹的描述符 返回值&#xff1a;成功返回描述符&#xff0c;失败返回NULL opendir()函数打开与目录名对应的目录流…

ssrf复习(及ctfshow351-360)

1. SSRF 概述 服务器会根据用户提交的URL发送一个HTTP请求。使用用户指定的URL&#xff0c;Web应用可以获取图片或者文件资源等。典型的例子是百度识图功能。 如果没有对用户提交URL和远端服务器所返回的信息做合适的验证或过滤&#xff0c;就有可能存在“请求伪造"的缺陷…

C++之智能指针:shared_ptr、unique_ptr、weak_ptr的概念、用法即它们之间的关系

智能指针 (1)概述 A.Why&#xff08;C为什么引入智能指针&#xff09; C引入智能指针的根本原因就是解决手动管理动态内存所带来的问题&#xff0c;手动管理动态内存常见的问题如下&#xff1a;内存泄漏、悬挂指针、释放操作未定义等 内存泄漏问题&#xff1a; 当程序用光了它…

国产开源系统openEuler_24.03_LTS部署安装/基础配置/验证连接实操手册

前言&#xff1a; openEuler 是开放原子开源基金会&#xff08;OpenAtom Foundation&#xff09;孵化及运营的开源项目。 欧拉操作系统(openEuler&#xff0c;简称“欧拉”,“开源欧拉”)是面向数字基础设施的操作系统&#xff0c;支持服务器、云计算、边缘计算、嵌入式等应用场…

ctfshow~菜狗杯 你会数数吗

用010Editor打开文件附件 选择工具->直方图 选择记数&#xff0c;从上到下就是flag ctfshow{a1b2d3e4g56i7j8k9l0}

操作系统内核源码杂谈篇:临界区

临界资源&#xff0c;是指同一时刻只能由一个线程&#xff08;linux下为进程&#xff09;访问的资源&#xff0c;而临界区就是为了确保临界资源访问是单一数据流。 临界区的代码执行&#xff0c;也就是进行原子操作&#xff0c;不会被打断。 先分析RTOS的运行架构&#xff0c…