Qt 把.exe打包成安装文件形式

目录

  • 1.下载工具 Qt Installer Framework
  • 2.将`bin`文件添加到环境变量
  • 3.拷贝`startmenu`示例-备用
  • 4.准备Qt Release打包好的程序
  • 5.把Release打包好的程序放到`packages\org.qtproject.ifw.example\data`文件夹下
  • 6.生成安装包
  • 7.修改安装包图标
  • 8.修改主程序程序安装引导-创建快捷键
  • 9.添加驱动安装包
  • 10.嫌弃打包耗时太长?

Qt Installer Framework 使用

1.下载工具 Qt Installer Framework

官网下载链接
下载直接安装
在这里插入图片描述

2.将bin文件添加到环境变量

在这里插入图片描述

3.拷贝startmenu示例-备用

在这里插入图片描述

4.准备Qt Release打包好的程序

确保自己的.exe能够正常运行,没有缺少dll文件
在这里插入图片描述

5.把Release打包好的程序放到packages\org.qtproject.ifw.example\data文件夹下

在这里插入图片描述

6.生成安装包

回到startmenu目录下,打开CMD终端,执行指令

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

脚本程序生成脚本.bat

@echo off
start cmd /k "binarycreator --offline-only -c config/config.xml -p packages install.exe -v"

在这里插入图片描述

在这里插入图片描述
不出意外,正常生成安装包,双击即可安装
在这里插入图片描述

7.修改安装包图标

在这里插入图片描述
startmenu\config文件夹下准备3张图片

在这里插入图片描述
修改startmenu\config\config.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Installer><Name>软件名称</Name><!-- 软件名称 --><Version>0.1.3</Version><!-- 版本号 --><Title>安装程序窗口标题</Title><!-- 安装程序窗口标题 --><Publisher>公司名称</Publisher><!-- 公司名称 --><!-- Directory name is used in component.xml --><StartMenuDir>Ancel IR</StartMenuDir><!-- 要生成的windows开始菜单目录 --><TargetDir>@HomeDir@/APPPath</TargetDir><!-- 默认安装路径 --><Logo>logo.png</Logo><InstallerApplicationIcon>app</InstallerApplicationIcon><!-- app.ico,但是不要ico后缀 --><InstallerWindowIcon>app.png</InstallerWindowIcon>
</Installer>

重新生成后,安装过程中引导语,图标就是我们自定义的了
在这里插入图片描述

8.修改主程序程序安装引导-创建快捷键

修改文件packages\org.qtproject.ifw.example\meta\package.xml

<?xml version="1.0" encoding="UTF-8"?>
<Package><DisplayName>主程序</DisplayName><Description>主程序描述.</Description><Version>1.0.0-1</Version><ReleaseDate>2013-01-01</ReleaseDate><Default>true</Default><Script>installscript.qs</Script>
</Package>

在这里插入图片描述
创建快捷键
修改文件packages\org.qtproject.ifw.example\meta\installscript.qs

function Component()
{// default constructor
}Component.prototype.createOperations = function()
{component.createOperations();//开始菜单的快捷方式component.addOperation("CreateShortcut","@TargetDir@\\debug.exe","@StartMenuDir@\\debug.lnk","workingDirectory=@TargetDir@","description=Open Application");//桌面快捷方式component.addOperation("CreateShortcut","@TargetDir@\\debug.exe","@DesktopDir@\\debug.lnk","workingDirectory=@TargetDir@","description=Open Application");
}

在这里插入图片描述

9.添加驱动安装包

这里以安装CH340串口驱动为例
把原来的org.qtproject.ifw.example拷贝一份,重命名为driver
在这里插入图片描述
把ch340驱动程序放到packages\driver\data目录下
在这里插入图片描述
在这里插入图片描述
修改文件packages\driver\meta\installscript.qs

function Component()
{// default constructor
}Component.prototype.createOperations = function()
{component.createOperations();if (systemInfo.productType === "windows"){component.addElevatedOperation("Execute", "{0,1,256}", "@TargetDir@\\CH341SER_2.EXE");component.addElevatedOperation("Delete", "@TargetDir@\\CH341SER_2.EXE");}}

修改文件packages\driver\meta\package.xml

<?xml version="1.0" encoding="UTF-8"?>
<Package><DisplayName>CH340驱动</DisplayName><Description>CH340驱动描述</Description><Version>1.0.0-1</Version><ReleaseDate>2013-01-01</ReleaseDate><Default>true</Default><Script>installscript.qs</Script><RequiresAdminRights>true</RequiresAdminRights> <!-- 代表用管理员权限安装这个组件 -->
</Package>

安装的过程就会自动弹出CH340安装请求
在这里插入图片描述

10.嫌弃打包耗时太长?

全选所有文件,右键,然后压缩成data.7z
不要创建 data 文件夹,再压缩
在这里插入图片描述
最后得效果是这样
在这里插入图片描述
如果有驱动,也一样压缩成.7z
在这里插入图片描述
在这里插入图片描述
再次执行生成安装包指令,2s就能出来install.exe安装包

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

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

相关文章

FFmpeg下载教程(Windows版)

文章目录 下载地址步骤 下载地址 https://ffmpeg.org/download.html 步骤

win c++使用lua环境配置 5.3.5版本

编译lua 下载lua源码&#xff0c;github仓库 使用vs编译源码&#xff0c;新建一个静态库项目(只会生成lib文件)&#xff0c;想要dll的话就新建dll项目&#xff08;有一个lib文件和dll文件&#xff09; 把lua源码下面的文件夹都是&#xff0c;复制到vs项目中 lib目录是我手动…

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock&#xff1a;读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async&#xff1a;异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件&#xff0c;A线程进行读取操作&#xff0c;B…

牛客社区帖子分页显示实现

下图是前端分页的组件&#xff1a; 下面是对应的静态html页面&#xff0c;每一个方块&#xff0c;都是一个a标签&#xff0c;可以点击&#xff0c;执行的链接是/community/index&#xff0c;GET请求&#xff0c;拼接的参数是current&#xff0c;也就是pageNum&#xff0c;只需…

ACE框架学习3

ACE Acceptor-Connector框架 该框架实现 Acceptor-Connector 模式&#xff0c;该模式解除了“网络化应用中的协作对端服务的连接和初始化”与“连接和初始化之后它们所执行的处理”的耦合。Acceptor-Connector 框架允许成用独立于它们所提供的服务来配置其连接布局的关键属性。…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…

ubuntu 复制文件路径

前言 我打算搞一个ubuntu右键复制文件路径的插件&#xff0c;但是找不到&#xff0c;只能平替 这个配置&#xff0c;可以把文件拖拽到cmd窗口&#xff0c;然后就直接cmd输出文件路径 配置 cd ~ vim .bashrc 在文件结尾添加 cdd () { ddirname "$1"; echo …

通过filebeat实现对docker服务的通用日志收集

平台 依赖 linux docker docker-compose 或者 docker compose 镜像 docker.elastic.co/beats/filebeat:8.12.2 docker.elastic.co/beats/kibana:8.12.2 docker.elastic.co/beats/elasticsearch:8.12.2 正文 背景 对于有自建机房的公司来说&#xff0c;如果公司的运维技术…

应用实战 | 别踩白块小游戏,邀请大家来PK挑战~

“踩白块会输”是一个简单的微信小程序游戏&#xff0c;灵感来自当年火热的别踩白块游戏&#xff0c;程序内分成三个模块&#xff1a;手残模式、经典模式和极速模式&#xff0c;分别对应由易到难的三种玩法&#xff0c;可以查看游戏排名。动画效果采用JS实现&#xff0c;小程序…

opencv可视化图片-----c++

可视化图片 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>// 将数据类型转换为字符串 std::string opencvTool::type2str(int type) {std::string r;uchar depth type & CV_MAT_DEPTH_MASK;uchar chans 1 (typ…

java开发之路——用户管理中心_简单初始化

用户管理中心_简单初始化 (一) 初始化项目1. 使用 Ant Design Pro(现成的管理系统) 进行前端初始化2. 后端初始化三种初始化java项目 (二) 遇到的问题【问题1】Ant design pro页面打不开&#xff0c;一直在budiling控制台出现错误error-./src/components/index.ts【问题2】初始…

数据结构和算法:贪心

贪心算法 贪心算法是一种常见的解决优化问题的算法&#xff0c;其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 贪心算法和动态规划都常用于解决优化问题。它们之间存在一…

51.HarmonyOS鸿蒙系统 App(ArkUI)通知

普通文本通知测试 长文本通知测试 多行文本通知测试 图片通知测试 进度条通知测试 通知简介 应用可以通过通知接口发送通知消息&#xff0c;终端用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用。 通知常见的使用场景&#xff1a; 显示接收到的短消息、…

GPT-3.5 Turbo 的 temperature 设置为 0 就是贪婪解码?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 将 GPT-3.5 Turbo 的 temperature 设置为 0 通常意味着采用贪婪解码&#xff08;greedy decoding&#xff09;策略。在贪婪解码中&#xff0c;模型在每一步生成文本时选择概率最高的词元&#xff0c;从…

Leetcode—1672. 最富有客户的资产总量【简单】

2024每日刷题&#xff08;120&#xff09; Leetcode—1672. 最富有客户的资产总量 实现代码 class Solution { public:int maximumWealth(vector<vector<int>>& accounts) {int ans 0;for(vector<vector<int>>::iterator it accounts.begin();…

SEGGER Embedded Studio IDE移植FreeRTOS

SEGGER Embedded Studio IDE移植FreeRTOS 一、简介二、技术路线2.1 获取FreeRTOS源码2.2 将必要的文件复制到工程中2.2.1 移植C文件2.2.2 移植portable文件2.2.3 移植头文件 2.3 创建FreeRTOSConfig.h并进行配置2.3.1 处理中断优先级2.3.2 configASSERT( x )的处理2.3.3 关于系…

PostgreSQL 14 向量相似度搜索插件 (pgvector) 安装指南

本文是关于在 PostgreSQL 14 中安装并使用向量相似度搜索插件(pgvector)的详细指南。此插件允许用户在数据库中执行高效的向量运算,特别适用于机器学习模型的向量数据存储与检索场景。 环境需求 已安装PostgreSQL 14或更高版本。安装了Visual Studio 2022,用于编译插件。安装…

CentOS命令大全:掌握关键命令及其精妙用法!

CentOS是一种流行的开源企业级Linux发行版&#xff0c;它基于Red Hat Enterprise Linux (RHEL)的源代码构建。对于系统管理员和运维工程师来说&#xff0c;掌握CentOS的常用命令至关重要。 这些命令不仅可以帮助管理服务器&#xff0c;还可以进行故障排查、性能监控和安全加固等…

fatal: unable to access ‘https://github.com/alibaba/flutter_boost.git/

Git error. Command: git fetch stdout: stderr: fatal: unable to access ‘https://github.com/alibaba/flutter_boost.git/’: Failed to connect to github.com port 443 after 75005 ms: Couldn’t connect to server exit code: 128 GitHub (国际型)代码 分发平台/托管平…

IDM下载器安装cmd注册

一、下载注册 安装包去IDM官网下载最新的试用版即可 或者直达百度网盘下载&#xff08;担心被河蟹&#xff0c;放在txt中了&#xff09;包含IDM下载器安装包和注册软件 IDM下载器安装包和注册软件下载地址链接 https://download.csdn.net/download/qq_31237581/89215452 如果…