当前位置: 首页 > news >正文

使用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.lryc.cn/news/217338.html

相关文章:

  • 逆袭Flutter? Facebook 发布全新跨平台引擎 Hermes!
  • c++ 互斥锁使用详解 lock_guard
  • 【快速解决】Android Button页面跳转功能
  • C语言 pthread_create
  • 前端uniapp提交表单调用接口方法最新
  • OpenFeign的简单介绍和功能实操
  • webpack 高级
  • OLE DB 访问接口所需的(最大)数据长度为 18,但返回的数据长度为 6。
  • oracle (9)Storage Relationship Strut
  • React 项目结构小结
  • 4.网络之TCP
  • 电池原理与分类
  • Mongoose 开源库--Filesystem(文件系统)使用笔记
  • 新兴初创企业参展招募
  • 【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包
  • 银行和金融企业为何青睐这8款项目管理工具
  • 一分钟理解npm run dev 和 npm run serve
  • HTTP 协议请求头 If-Match、If-None-Match 和 ETag
  • DAY42 1049.最后一块石头的重量II + 494.目标和 + 474.一和零
  • uniapp原生插件之安卓华为统一扫码HMS Scan Kit
  • 数模国赛——多波束测线问题模型建立研究分析
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • vue+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)
  • LeetCode算法题解|​ 669. 修剪二叉搜索树​、108. 将有序数组转换为二叉搜索树、​538. 把二叉搜索树转换为累加树​
  • 直播界很火的无线领夹麦克风快充方案 Type-C接口 PD快充+无线麦克风可同时进行
  • Jmeter 汉化中文语言
  • centos9 stream 下 rabbitmq高可用集群搭建及使用
  • 代码随想录算法训练营第10天|232. 用栈实现队列 225. 用队列实现栈
  • 线上Kafka集群如何调整消息存储时间
  • [迁移学习]DA-DETR基于信息融合的自适应检测模型