使用Qt Installer Framework将自己的程序打包成安装包程序

使用Qt Installer Framework将自己的程序打包成安装包程序

制作安装包程序就是将自己的程序打包成一个可执行的exe,双击之后进行安装。

1. 在制作安装包程序之前需要安装qt官方提供的安装包制作工具Qt Installer Framework

去qt官方网址,下载对应的 Qt Installer Framework https://download.qt.io/official_releases/qt-installer-framework/4.6.1/ , 我的电脑是win1064位的,因此我选择了一个64为版本

在这里插入图片描述
安装过程很简单,就是一路点击知道完成,具体的可以百度。
安装好之后,需要设置环境变量才能在任何地方都能通过命令行调用,
在这里插入图片描述
在这里插入图片描述将Qt Installer Framework的bin目录添加到环境变量中,这样无论在哪个命令行窗口中都能使用Qt Installer Framework进行程序打包
在这里插入图片描述

2. 创建打包所需配置文件

在进行打包之前需要按照规定创建一些必要的目录,并在目录中创建对应的文件用来只是打包工具如何生成安装程序。
创建一个空文件夹pack,并在目录下创建如下两个文件夹
在这里插入图片描述
config中创建一个config.xml文件
在这里插入图片描述
config.xml中内容如下,主要用来指导程序安装时开始菜单中图标如何存放的信息

<?xml version="1.0" encoding="UTF-8"?>
<Installer><Name>test</Name><Version>1.0.0</Version><Title>test</Title><Publisher>子安</Publisher><!-- Directory name is used in component.xml --><StartMenuDir>test</StartMenuDir><TargetDir>@HomeDir@/test</TargetDir>
</Installer>

在packages中随便创建一个目录如下:
在这里插入图片描述
并在该目录下创建两个文件夹 data 和meta
在这里插入图片描述
在meta中创建两个文件如下:
在这里插入图片描述
其中installscript.qs内容如下:

function Component()
{// default constructor
}Component.prototype.createOperations = function()
{// call default implementation to actually install README.txt!component.createOperations();// 这里创建桌面图标和开始菜单图标,注意指定的iconPath必须是ico结尾,否则部分电脑可能显示不了图标if (systemInfo.productType === "windows") {component.addOperation("CreateShortcut", "@TargetDir@/ScreenShotTool.exe", "@StartMenuDir@/ScreenShotTool.lnk","workingDirectory=@TargetDir@", "iconPath=@TargetDir@/images/icon.ico","description=Open Chinaxinge");//创建桌面快捷方式component.addOperation("CreateShortcut", "@TargetDir@/ScreenShotTool.exe", "@DesktopDir@/ScreenShotTool.lnk", "iconPath=@TargetDir@/images/icon.ico","workingDirectory=@TargetDir@");component.addOperation("CreateShortcut", "@TargetDir@/ScreenShotTool1.exe", "@StartMenuDir@/UninstallScreenShotTool.lnk","workingDirectory=@TargetDir@", "iconPath=@TargetDir@/images/icon.ico","description=Open Chinaxinge");}
}

package.xml的文件内容如下:


<?xml version="1.0" encoding="UTF-8"?>
<Package><DisplayName>ScreenShotTool.exe</DisplayName><Description>A ScreenShotTool.exe, accessible through a start menu entry.</Description><Version>1.0.0-1</Version><ReleaseDate>2023-10-01</ReleaseDate><Default>true</Default><Script>installscript.qs</Script>
</Package>

在以上都准备好之后, 就进入正题了,我们把通过release编译好的程序copy到data目录,我这里在 pack\packages\org.qtproject.ifw.example\data

3. 打包发布包

在上述操作都完成了之后,就可以着手进行发布包的制作了, 我们进入到data目录,然后通过qt提供的windeployqt工具制作发布包,最简单的方式就是进入指定目录,然后执行 windeployqt xxxx.exe
执行结束,在data目录下会有发布包需要的所有文件
在这里插入图片描述
这个时候,你双击执行一下,看data中的程序是否可以正常执行,如果能正常运行说明发布包制作成功。

4. 将发布包按照config要求打包成可执行的安装程序

在上述操作都完成之后, 我们就可以将程序打包成可执行程序可。
我们进入到pack目录,然后执行一下命令:

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

如果程序文件比较多,可能会耗时很久,需要进耐心等待。等全部执行完就可以在pack目录下得到一个install.exe
在这里插入图片描述
在这里插入图片描述
双击该可执行程序,验证制作的安装程序是否正常。
在这里插入图片描述

以上示例使用的工程文件可从git上直接下载 :
https://github.com/zzu-andrew/QT_examples/tree/main/qt_install

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

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

相关文章

HNU-计算机网络-实验1-应用协议与数据包分析实验(Wireshark)

计算机网络 课程基础实验一 应用协议与数据包分析实验(Wireshark) 计科210X 甘晴void 202108010XXX 一、实验目的&#xff1a; 通过本实验&#xff0c;熟练掌握Wireshark的操作和使用&#xff0c;学习对HTTP协议进行分析。 二、实验内容 2.1 HTTP 协议简介 HTTP 是超文本…

89 柱状图中最大的矩形

柱状图中最大的矩形 类似接雨水&#xff08;反过来&#xff0c;相当于找接雨水最少的一段&#xff09;题解1 暴力搜索&#xff08;超时&#xff09; O ( N 2 ) O(N^2) O(N2)另一种 题解2 单调栈【重点学习】常数优化 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的…

python调用飞书机器人发送文件

当前飞书webhook机器人还不支持发送文件类型的群消息&#xff0c;可以申请创建一个机器人应用来实现群发送文件消息。 创建机器人后&#xff0c;需要开通一系列权限&#xff0c;然后发布。由管理员审核通过后&#xff0c;才可使用。 包括如下的权限&#xff0c;可以获取群的c…

1. PPT高效初始化设置

1. PPT高效初始化设置 软件安装&#xff1a;Office 2019 主题和颜色 颜色可以在白天与黑夜切换&#xff0c;护眼 切换成了黑色 撤回次数 撤回次数太少&#xff0c;只有20次怎么办 自动保存 有时忘记保存就突然关闭&#xff0c;很需要一个自动保存功能 图片压缩 图…

OpenCV 笔记(4):图像的算术运算、逻辑运算

Part11. 图像的算术运算 图像的本质是一个矩阵&#xff0c;所以可以对它进行一些常见的算术运算&#xff0c;例如加、减、乘、除、平方根、对数、绝对值等等。除此之外&#xff0c;还可以对图像进行逻辑运算和几何变换。 我们先从简单的图像加、减、逻辑运算开始介绍。后续会有…

使用Objective-C和ASIHTTPRequest库进行Douban电影分析

概述 Douban是一个提供图书、音乐、电影等文化内容的社交网站&#xff0c;它的电影频道包含了大量的电影信息和用户评价。本文将介绍如何使用Objective-C语言和ASIHTTPRequest库进行Douban电影分析&#xff0c;包括如何获取电影数据、如何解析JSON格式的数据、如何使用代理IP技…

轻松搭建Nextcloud私有云盘并实现远程访问【内网穿透】

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

搜维尔科技:scalefit生物力学人体工学软件分析!

人体工程学分析 21加载参数和头像显示 识别(隐藏的)健康风险 根据DGUV交通灯进行生物反馈(DIN/ISO) 实时应力分析 三维空间可视化 静态/动态肩载 用左/右赋值加载输入 腰椎间盘压缩计算 距离和定时器显示 带有运动跟踪的化身/视频叠加 外骨骼与CAD工作站仿真 CSV原始…

不只保护隐私的防窥膜,还是屏幕的小铠甲

电脑防窥膜这种东西确实很实用&#xff0c;尤其是那些经常在公共场所用笔记本的朋友&#xff0c;更是需要这张贴膜的保护&#xff0c;不过虽然现在市面上这种防窥膜种类繁多&#xff0c;但是产品质量良莠不齐。有些防窥膜虽然有防窥效果&#xff0c;但透光率下降太多了&#xf…

在Qt中List View和List Widget的区别是什么,以及如何使用它们

2023年10月29日&#xff0c;周日晚上 目录 List View和List Widget的区别 如何使用QListView 如何使用QListWidget List View和List Widget的区别 在Qt中&#xff0c;QListView 和 QListWidget 是用于显示列表数据的两个常用控件&#xff0c;它们有一些区别和特点。 1. 数…

免费(daoban)gpt,同时去除广告

一. 内容简介 免费(daoban)gpt&#xff0c;同时去除广告&#xff0c;https://chat18.aichatos.xyz/&#xff0c;也可当gpt用&#xff0c;就是有点广告&#xff0c;大家也可以支持一下 二. 软件环境 2.1 Tampermonkey 三.主要流程 3.1 创建javascript脚本 点击添加新脚本 …

opengl基础笔记1

1、opengl运行模式及opengl规范 运行模式&#xff1a;核心模式与立即渲染模式&#xff08;弃用&#xff09; 由于OpenGL的大多数实现都是由显卡厂商编写的&#xff0c;当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL&#xf…