Qt打包发布程序,打包安装程序和打包为单个exe可执行程序,图文教程

2023-11-04

Qt打包发布程序,打包安装程序和打包为单个exe可执行程序,图文教程

1、前言

当我们用Qt制作好软件后,要将程序拷贝到别人的电脑上使用,如果直接拷贝exe是无法运行的,本教程将介绍如何将制作好的Qt软件打包发布。

2、将Qt程序生成release版本

首先要将Qt左下角的Debug改为Release,再点击绿色箭头编译一遍,编译出release版本
在这里插入图片描述
找到对应的release文件夹下,将count.exe拷贝到单独文件夹下
在这里插入图片描述
在这里插入图片描述
如果找不到release文件的路径,可以在Qt界面中点击项目,在构建目录中。
在这里插入图片描述

2、使用Qt自带windeployqt拷贝依赖项

在开始菜单中,找到Qt5.14.1文件夹,并找到qt 5.14.1 mingw 控制台
注意,必须用Qt自带的控制台,不能用系统cmd
用命令
cd /d 路径
进入我们刚才安放exe文件的文件夹
用dir 命令,列出文件
用 windeployqt count.exe
将依赖项拷贝到当前文件夹。
如图所示
在这里插入图片描述
此时,已经可以将这个文件夹拷贝到别人的电脑里了,点击exe文件就可以执行。

3、如何打包为可安装的setup程序

完成之前的步骤后,我们还可以将程序进一步打包,打包为setup安装程序,当别人拿到安装程序后,就能像从网上下载的安装包一样,一步一步安装,是不是很高大上。
这里用到了打包软件NSIS,网上很好下载。
在这里插入图片描述
NSIS是一款打包软件,有很多版本,但是操作都大同小异,相信聪明的大家一看就会。
打开软件,点击可视化脚本编辑器。
在这里插入图片描述
点击文件,选择新建脚本向导,点击下一步
在这里插入图片描述
此处可以编辑,应用程序名称,版本号,等信息,也可以保持默认,点击下一步
在这里插入图片描述
语言选择,简体中文,下一步
在这里插入图片描述
配置安装软件时的花里胡哨的东西,不管,点击下一步:
在这里插入图片描述
这步就比较关键了,默认的授权文件是不存在的,你必须自己选择一个授权文件,这里,随便在桌面新建一个.txt文件,里面写上几个字母就行了。然后选择该文件。此文件并不影响后面安装,但必须要有。点击下一步:
在这里插入图片描述
在这里插入图片描述
将这两个文件删除(选择后点击叉叉),后单机蓝圈中的树按键,在目录中选择我们之前放exe文件的地方,勾选包含子目录,勾选单独添加每个文件,并确定。可以看到我们需要的文件都被包含进来了。点击下一步。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置开始菜单,随你心情选择,点击下一步
在这里插入图片描述
看一看是否是我们要创建的程序,一般情况下是正确的。
在这里插入图片描述
这里是设置安装的图标与卸载时的提示与图标,随心情设置,下一步:
在这里插入图片描述
勾选下面三个选项,如果忘记勾选,也不用着急,在NSIS的菜单中去找对应命令吧。点击完成,选择保存地址。
在这里插入图片描述
在这里插入图片描述
程序便开始运行了,最后生成一个setup.exe
在这里插入图片描述
在这里插入图片描述
接下来就可以将这个程序拷贝到别人的电脑上安装啦。

4、如何打包为单个的exe可执行程序

这时候,有的小伙伴会问,我不想要安装程序,我也不想要一个文件夹那么多的文件,麻烦,我就想要一个单独的exe,拷贝到哪里都能使用,这怎么办?
方法是有的,用到了一个小工具Enigma Virtual Box,该工具在网上很好下载
下载链接:https://download.zol.com.cn/detail/45/446975.shtml?qw=#zhidaUrl
打开Enigma Virtual Box
在这里插入图片描述
选择刚才文件夹下的exe程序,点击添加,选择添加文件夹递归,选择对应文件,点确定
在这里插入图片描述
在这里插入图片描述
可以看到,已经将要打包的所有文件给包含了,此时我们还需要将count.exe文件移除
在这里插入图片描述
点击文件选项,勾选压缩文件,确定,最后开始打包
在这里插入图片描述
点击右下方的打包,打包完退出工具即可。

然后文件夹中就会出现不依赖dll单个的exe文件,这样就直接将单个exe可以拷贝到其他电脑上运行了。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt打包发布程序,打包安装程序和打包为单个exe可执行程序,图文教程 的相关文章

  • 为什么使用数组索引循环数组比指针访问慢?

    我正在读Kochan的书 Programming in C 在第 14 页的 指针和数组 部分中 264 他说 一般来说 索引数组的过程比执行索引过程花费更多的时间 访问指针内容的过程 其实这也是主要原因之一 为什么使用指针来访问数组的元素
  • C语言实现延时函数

    我想使用空循环实现延迟函数 但是完成一次循环所需的时间取决于编译器和机器 我希望我的程序自行确定时间并将程序延迟指定的时间 谁能给我任何想法如何做到这一点 注意 有一个名为delay 的函数可以将系统暂停指定的毫秒 是否可以在不使用此功能的
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • 带有嵌入 Flash 视频的 PDF 示例?

    有谁知道我在哪里可以查看嵌入 Flash 视频的 PDF 示例 我知道问这个问题很愚蠢 因为你会认为任何面向技术的用户都应该能够使用谷歌找到一个 但我真的找不到 我的另一个问题是 使用 C 中的 API 将 Flash 视频嵌入 PDF 文
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • 在 Linq 查询中使用动态列名称

    foreach Dimension dimensions in Enum GetValues typeof Dimension var r new ReferenceTable dimensions referenceItems List
  • 如何将输出重定向到 boost 日志?

    我有一个使用boost log的C 程序 我加载了用户提供的动态链接库 我想将 stderr 重定向到 boost 日志 以便用户的库随时执行以下操作 std cerr lt lt Some stuff 它产生相同的结果 BOOST LOG
  • 解析连接字符串

    是否有标准库或代码片段可以使用这样的连接字符串获取值 string connstr DataServiceUrl http localhost foo RemoteServerConnection server http localhost
  • “DeploymentItem”属性是什么意思?

    假设我们有一个简短的程序 namespace ConsoleTryIt static class Program static void Main string args var sum Add 1 2 private static int
  • 当分配返回 0 时,具有空异常规范的运算符 new 调用构造函数

    我有以下声明 void operator new size t s PersistentMemory m throw return m gt allocatePersistentMemory s 我正在测试启动时的内存耗尽 这会导致m gt
  • C++ 模板参数数量错误(2,应该是 1)

    我使用 C 并行快速排序程序进行了测试 如下所示 首先使用列表作为容器 然后我转移到通用容器类型 但它报告了标题错误 可以帮忙解决这个问题吗 include
  • 快速将文本附加到文本框

    我有一个BackgroundWorker正在发布消息的线程 使用BeginInvoke在 GUI 中的文本框中 方法 write debug text 在文本框中显示文本使用AppendText并将文本写入Console 外观上是这样的Ba
  • 如何解决 boost::multi precision::cpp_dec_float 除法错误

    除以boost multiprecision cpp dec float有某种舍入误差 如下 include
  • 使用 DataGridViewCheckboxCell 真正禁用 DataGridView 中的复选框

    有谁知道如何使用 DataGridViewCheckboxCell 禁用 DataGridView 中的复选框 我可以将其设置为只读 并设置背景颜色 但我无法让复选框本身显示为禁用状态 有什么想法吗 Guess 你必须自己画 http so
  • C++ 在预处理器 #if 中对 sizeof() 比较抛出编译错误

    我有这个 它不会从 Visual Studio 编译错误 致命错误 C1017 无效的整数常量表达式 我该怎么做 template
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • 从 C/C++ 程序进行 Ping

    我想编写一个 C 或 C 程序 给定一个 IP 地址 对其进行 Ping 然后根据 Ping 是否成功执行进一步的操作 这个怎么做 尽情享受Ping 页面 http www ping127001 com pingpage htm 其中有一个

随机推荐

  • STM32F103ZET6【标准库函数开发】---04.1 五个串口的时钟以及重映射应该如何配置

    一 硬件介绍 正点原子战舰开发板 STM32F103ZET6有5个串口 USART1 USART2 USART3 UART4 UART5 模式总览 引脚位置 二 引脚功能 打开STM32F103ZET6数据手册IO介绍可以看到IO口功能有三
  • 百万前端之js倒计时功能

    js实现倒计时的方法很简单 基本的方法就是倒计时的结束时间减当前时间就是倒计时的时间了 通过js的内置函数获取时间并对时间进行处理 最后进行拼接插入就实现简单的倒计时功能了 demo的css参考 body position relative
  • DP--线性DP--【整理】【经典入门例题】

    每种类型仅有一个经典的例题 复习一下之前的知识 在学习新知识 不过会推荐一些博客 虽然我也没看过 只是挑一个经典题看看 1 最长上升子序列 LIS问题 大佬博客 最长上升子序列题目大合集 问题描述 给定一个长度n的数列A 求单调递增的子序列
  • 通达信交易系统接口实现自动交易策略的方法分享

    在通达信交易系统接口中 有着比较独特的交易系统 在这个交易系统中 也有各种各样的自动交易策略 可以通过交易接口来实现预先设定好的策略来进行自动交易 从而提高交易者的投资效率 下面向大家介绍其中几种自动交易策略 追踪卖出算法 追踪卖出算法说明
  • 使用pcl库处理点云数据,如何给点云的指定字段赋值?

    1 不同字段的两个点云之间存在相同字段时 如何给对应的相同字段赋值 pcl PointCloud
  • c语言编写经验逐步积累3

    寥寥数笔 记录我的C语言盲点笔记 只为曾经经历过 亦有误 可交流 1 typedef来定义一个函数指针类型的方法 定义一个新的函数指针类型 建立一个类型别名的方法很简单 在传统的变量声明表达式里用类型名替代变量名 然后把关键字typedef
  • 代码重构技巧之重复代码

    在我们项目开发的过程中 有时写着写着顺手了 对于一些业务代码 重复编写 导致后来需要修改的时候 得整个项目到处找这些重复代码 这真是一件糟糕的事 一 重复代码 定义 重复代码并不是指的完全一模一样的代码 只要在一段代码 业务处理上 有相识之
  • Maven 学习笔记二十一:Maven仓库(快照版本)

    Maven仓库 快照版本 在Maven的世界中 任何一个项目或者构件都必须有自己的版本 版本的值可能是1 0 0 1 3 alpha 4 2 0 2 1 SNAPSHOT或者2 1 20091214 221414 13 其中 1 0 1 3
  • Cef 模式下,Vue @click 事件偶尔无效问题

    Cef 模式下 Vue 项目 click 事件偶尔无效问题 Cef 模式 使用 C 创建的一个浏览器 有它自己的浏览器内核版本 在 Cef Web 壳子中开发时候 发现 Vue 项目 的 click 偶尔就无效 一开始还以为电脑卡了 具体分
  • 华为OD机试真题 Java 实现【非严格递增连续数字序列】【2022Q4 100分】

    一 题目描述 输入一个字符串仅包含大小写字母和数字 求字符串中包含的最长的非严格递增连续数字序列的长度 比如122889属于非严格递增连续数字序列 二 输入描述 输入一个字符串仅包含大小写字母和数字 输入的字符串最大不超过255个字符 三
  • Linux_4 消息队列

    1 基础概念 消息队列 Unix的通信机制之一 可以理解为是一个存放消息 数据 容器 将消息写入消息队列 然后再从消息队列中取消息 一般来说是先进先出的顺序 消息队列本质上是位于内核空间的链表 链表的每个节点都是一条消息 每一条消息都有自己
  • 多图预警!Ubuntu18.04全套安装流程

    1 Ubuntu系统下载 Ubuntu18 04LTS下载地址 点击跳转 对于软件开发人员 建议下载Ubuntu18 04LTS 支持相对较多较稳定 2 下载软碟通软件 UltraISO UltralISO下载链接 点击跳转 3 安装使用
  • 三目运算符判断多个条件的使用方法

    写项目的时候数据状态有三种 给三种不同的样式 然后发现可以简单地使用三目运算符 就可以实现多个条件的判断 span scope row status span 也就是这个用法 key 1 第一种 key 2 第二种 key 3 第三种 第四
  • 总结一下query中ajax的几种方法

    1 ajax ajax type POST 提交数据的类型 POST GET url testLogin aspx 提交的网址 提交的数据 data Name sanmao Password sanmaoword 返回数据的格式 datat
  • opencv-python帧差法

    代码如下 import cv2 import numpy as np cap cv2 VideoCapture E chinese ocr master xinwen 3 avi Check if camera opened success
  • 第11课 微信小程序多种弹窗提示样式

    第11课 微信小程序弹窗提示样式 消息提示 wx showToast Object object 关闭消息提示 wx hideToast Object object 弹窗选框提示 wx showModal Object object 加载提
  • 2017阿里笔试 用模板库中的vector解决笔试中的兔子繁殖问题

    问题介绍 1 猎人把一对兔子婴儿 一公一母称为一对 放到一个荒岛上 两年之后 它们生下一对小兔 之后开始每年都 会生下一对小兔 生下的小兔又会以同样的方式继续繁殖 2 兔子的寿命都是x x gt 3 年 并且生命的最后一年不繁殖 3 如果岛
  • R语言学习笔记:从零开始?数据结构和基础知识

    R语言是一种数学编程语言 主要用于统计分析 绘图 数据挖掘 其在生物信息大数据分析处理过程中扮演着重要角色 笔者从今天开始分享R语言学习笔记 环境安装 Windows 官方地址 https cloud r project org bin w
  • Linux下socket多路复用应用--select函数

    Linux下socket多路复用应用 select函数 Select系统调用是用来让我们的程序监视多个文件描述符 file descriptor 的状态变化的 程序会停在select这里等待 直到被监视的文件描述符有某一个或多个发生了状态改
  • Qt打包发布程序,打包安装程序和打包为单个exe可执行程序,图文教程

    Qt打包发布程序 打包安装程序和打包为单个exe可执行程序 图文教程 1 前言 当我们用Qt制作好软件后 要将程序拷贝到别人的电脑上使用 如果直接拷贝exe是无法运行的 本教程将介绍如何将制作好的Qt软件打包发布 2 将Qt程序生成rele