Qt为release中可执行程序添加库进行打包并结合inno setup打包生成exe安装文件

2023-11-01

Qt为release中可执行程序添加库进行打包并结合inno setup打包生成exe安装文件


文章目录


Qt程序开发完后需要为release可执行程序添加链接库支撑并生成可以在其它电脑上安装的exe才好传播,这里记录一下处理过程。

一、Qt为release中可执行程序添加库进行打包

编译后的程序需要去掉调试信息,然后使用Qt安装时带有的工具进行链接库查找打包。

1、编译release版本可执行程序

构建Release版本:
在这里插入图片描述

2、找到release下编译好的可执行程序

在这里插入图片描述

3、使用windeployqt.exe进行打包

将上述exe复制出来,比如我这里:
在这里插入图片描述
然后找到如下内容运行(其实是在Qt安装的MinGW目录下中运行cmd):在这里插入图片描述
之后使用windeployqt工具并拖刚才复制出来的exe到终端然后运行:
在这里插入图片描述
然后会发现一些Qt的库被放在了对应exe的文件夹内:
在这里插入图片描述
有的库我本身没用到,可以删掉,比如我这里没有用到D3D、opengl、GLES这些库,删掉之后会小一般以上(前提是你确认你确实没有用到这些库)。

这时候的文件夹压缩后也可以放在其它类似系统电脑上使用了,但是为了更方便,一般我们在Windows下传播时还会利用工具将其打包成exe文件。

二、使用inno setup生成exe安装文件

对上述打包后的可执行程序和文件、文件夹再做一层压缩打包生成exe文件,这样给到其它人使用时就给个exe直接安装即可,而且可以做一些添加桌面快捷方式等操作。

这里你可以找一些打包exe的软件,比如我这里选用的inno setup。

1、下载inno setup

https://jrsoftware.org/isdl.php
我找了随机站点进行下载,安装了6.0.3版本。
网盘地址:
链接:https://pan.baidu.com/s/10m7YpuTraXuLyS8uIDtypw
提取码:gx1j

2、安装

安装的话选择默认的英文版本进行安装即可,这个版本没有中文汉化,需要的话可以自行去找中文版的。

3、基本的使用

(1)、首次没有打包过的话直接new一个:

在这里插入图片描述

(2)、不要勾选创建空脚本,直接下一步:

在这里插入图片描述

(3)、填一下相关的信息:

在这里插入图片描述

(4)、设置安装时的文件夹的名称以及是否可以允许用户选择其它文件夹等:

在这里插入图片描述

(5)、选择打包的可执行程序以及对应的文件和文件夹等:

在这里插入图片描述

(6)、添加到开始菜单以及创建桌面快捷方式:

在这里插入图片描述

(7)、添加许可文件以及安装前、安装后显示的信息文件,暂时也可以不选:

在这里插入图片描述

(8)、选择安装模式,为所有用户或者让给用户选择等:

在这里插入图片描述

(9)、安装语言,一般选择默认的英文,最好不要多选,否则安装时可能会失败:

在这里插入图片描述

(10)、设置编译输出位置、生成的exe的名字、exe的ico图标选择、设置安装密码:

在这里插入图片描述

(11)、下一步即可:

在这里插入图片描述

(12)、完成:

在这里插入图片描述

(13)、之后可以看到编译脚本:

在这里插入图片描述
然后可以点击执行编译,完成后就会在之前选择的输入位置生成可执行程序,此外,这个脚本也可以保存下来,下一次更新该程序后重新打包的时候可以简单修改下这个脚本后重新执行即可。

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

Qt为release中可执行程序添加库进行打包并结合inno setup打包生成exe安装文件 的相关文章

  • 使用pyqt5生成SVG文件

    我想使用 pyqt5 使用 Python 绘制一些简单的矢量图像 到目前为止 我已经成功使用以下代码生成了图像 import sys from PyQt5 QtCore import from PyQt5 QtGui import from
  • 如何更改 MDI 子窗口图标?

    看下图 我已经创建了Sub Window动态地 我尝试使用setWindowIcon函数如下 mdiWindows gt setWindowIcon QIcon icon ico 但效果不佳 另请参阅以下代码 MDI 窗口创建 QWidge
  • 使用 PostgreSQL 编译静态 Qt 5.10.0 时出错

    我正在尝试在 Windows 7 上使用 mingw 编译 Qt 5 10 0 和 PostgreSQL 10 或 9 2 但同样的错误 但是 当我包含 psql include 和 lib 目录时 在 mingw32 make 之后我总是
  • QT5文本渲染问题

    我在基于 MIPS 的平台上交叉编译了 QT5 每当我运行包括示例应用程序 其中包含文本 的应用程序时 它首先绘制文本 然后使用文本颜色的 矩形 填充来绘制文本区域 所以最后我在所有显示文本的地方看到了一个黑色矩形 如果我改变文本颜色 矩形
  • 如何使用 GoogleTest 框架漂亮地打印 QString?

    我将 GoogleTest GTest 框架与 Qt5 应用程序结合使用 每当使用 QString 参数的测试失败时 框架就会尝试打印所有涉及的值 但是 它无法自动处理外部类型 本例中为 Qt5 的 QString QString test
  • 从 listWidget 中删除选定的项目

    如何从列表中删除选定的项目QListWidget 我尝试编写以下代码 但它不起作用 QList
  • 设置16位灰度QImage的像素值

    我有一个宽度 imagewidth 和高度 imageheight 的 16 位图像 数据当前存储在长度为 imagewidth imageheight 的无符号短整型数组中 我想从我的数据集 称为 数据 创建一个 16 位灰度 QImag
  • QMediaplayer 无法在无框和半透明背景 PyQt5 上工作

    我正在使用 QMediaplayer 制作视频播放器 但它无法在无框和半透明背景窗口上工作 我想制作圆角窗口 所以我需要无框和半透明窗口 这是我的代码 from PyQt5 QtCore import Qt QUrl from PyQt5
  • 使用 Qt,有哪些好方法可以分解包含 GUI 逻辑的大型源文件?

    我正在使用 Qt 5 开发一个 C 项目 它有一个包含大量 UI 元素的复杂窗口 该窗口是使用 Qt Designer 设计的 并从 UI 文件加载 我发现 Qt 的典型模式是在其主类中编写窗口 UI 的所有逻辑 即他们文档中的 单一继承方
  • 悬停时突出显示自定义 QWidgetAction

    我的应用程序有一个QMenuBar与一些QMenus 其中每个都有多个QActions 和子QMenus 大部分的QAction 项目是衍生品QWidgetAction并重新实施QWidgetAction createWidget方法 通常
  • 如何在QML中设置弹出菜单位置

    我想修复 QML 中弹出菜单的位置 当我单击设置按钮时 我希望弹出菜单将显示在固定位置 我用了一天的时间就做到了 但是做不到 我怎样才能在 QML 中做到这一点 另外 我想更改菜单项的大小 宽度和高度 希望您的帮助 这取决于QtQuick
  • 如何在 Qt 5 中写入和读取 QResource 文件?

    很奇怪 我通过以下方式将所需的文件添加到资源中添加现有文件 文件就在那里 我运行 qmake 构建 gt 运行 qmake 以使文件可用 第一期 我无法从输出终端向文件写入任何内容 但是当我手动写入文件时 每次运行它时输出终端都会显示更改
  • QT 5.6 QWebEngine不保存cookie

    我正在创建名为 webengine 的简单 QT 应用程序 pWebView new QWebEngineView this pWebView gt load QUrl http technoz ru pWebView gt show On
  • Qt 的最佳实践包括和预编译头文件?

    当使用现代和最新的 C 编译器 例如 MSVC2015 并激活预编译头时 当前关于包含 Qt 头文件的 最佳实践 是什么 Example include
  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • (如何)我可以抑制未找到包配置文件的警告吗?

    我正在尝试创建一个CMakeLists txt尝试查找的文件Qt5 如果失败 则尝试回退到Qt4安装 该脚本到目前为止有效 但如果出现以下情况我总会收到警告Qt5未安装 注意FindQt5 cmake是由提供Qt5并且仅当以下情况时才可用Q
  • Qt mouseReleaseEvent() 未触发?

    我有一个显示图片的库 我们称之为 PictureGLWidget 其中 class PictureGLWidget public QGLWidget 所以 PictureGLWidget 扩展了 QGLWidget 在PictureGlWi
  • 在 Qt5 中,是否需要 Q_INVOKABLE 来从 QML 调用公共 QObject 函数?

    我刚刚意识到我可以调用暴露于 QML 的对象的几乎任何函数 现在我对 Q INVOKABLE 很好奇 Qt5docs http doc qt io qt 5 qtqml cppintegration exposecppattributes
  • QML 连接:不推荐使用连接中隐式定义的 onFoo 属性

    升级到 Qt 5 15 时收到以下错误消息 QML Connections Implicitly defined onFoo properties in Connections are deprecated Use this syntax
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table

随机推荐

  • 毕业季

    进入六月 毕业的氛围越来越浓 虽然忙 但更多的是不舍 四年 转眼之间 大一在高密校区的岁月仍历历在目 6 10 从公司请假 早上八点半去图书馆布置创新比赛的展板 6 11 休整一天 PPT准备6 12号早上的答辩 6 12 早八点半 在中德
  • 欧科云链让科技赋能乡村教育,获公益时报等主流媒体报道...

    中国经济网 公益时报前线报道 近日 欧科云链CSR团队到访饶河县饶河农场中心小学 为该校的人工智能创客实验室注入了新的活力 这一举措旨在助力学校推进人工智能教育 为农村学生提供更广阔的发展机会 饶河农场中心小学一直以来致力于创新教育 自20
  • nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 的解决办法

    问题概述 在基于微服务架构风格的项目开发过程中 为了提高快速开发的目的 提高开发效率 集成了 MyBatisPlus 对于 MyBatisPlus 封装的 CRUD API 接口已经非常强大了 但是有时还是需要使用其动态 SQL 的拼接 在
  • 性能测试之性能优化篇

    目录 为什么进行性能测试 性能测试的目的 服务性能优化的思考 衡量系统性能常用的指标 系统性能计数器 性能测试分类 如何合理的规划我们的架构性能 最后拿数据说话 性能优化原则 性能优化的方法 性能优化的分层思想 所有的优化都会对系统性能产生
  • flask 文件 服务器,flask服务器文件上传云

    flask服务器文件上传云 内容精选 换一换 弹性云服务器支持通过内网访问OBS OBS可供用户存储任意类型的数据 将图片 视频等数据存储至OBS后 在ECS上可以访问OBS 下载桶中的图片或视频等数据 通过内网访问OBS 可以避免因网络不
  • ASP.NET中JSON的序列化和反序列化

    在项目开发过程中 发现需要用到JSON序列化 反序列化的问题 所有 在网上找到了一下这篇文章 摘录了下来 摘自 http www cnblogs com zhaozhan archive 2011 01 09 1931340 html JS
  • 使用ijkplayer播放4k视频卡顿的解决方法

    使用ijkplayer播放4k视频卡顿的解决方法 使用硬解码 ijkMediaPlayer setOption IjkMediaPlayer OPT CATEGORY PLAYER mediacodec 1
  • PAT甲级1135

    红黑树的特点 1 根节点是黑色 2 如果一个节点是红色那么他的两个子节点都是红色 3 任意从根节点到叶子结点的路径上 所有的路径经过的黑色节点数相同 4 红黑树是二叉搜索树 算法 1 根节点是否为黑色 2 红色节点的两个子节点是不是都是黑色
  • JS 数组或对象的遍历(for、for...in、for...of、foreach)

    转载自 JavaScript 比较for for in for of forEach的区别 非早起选手的博客 CSDN博客 目录 一 for 二 for in 三 for of 四 forEach 五 小结 一 for 最原始的方法 用来遍
  • 【在线教育】- 前端环境搭建&讲师CURD前端实现

    在线教育 一 在线教育前端环境搭建 1 1 vue element admin 概述 1 2 vue element admin master安装 1 3 vue element template介绍 了解 1 4 vue element
  • 牛客面试高频算法题js(输出二叉树的右视图、岛屿数量、矩阵的最小路径和、字符串出现次数的TopK问题、二叉树根节点到叶子节点的所有路径和)

    NC136 输出二叉树的右视图 描述 请根据二叉树的前序遍历 中序遍历恢复二叉树 并打印出二叉树的右视图 数据范围 0 le n le 100000 n 10000 要求 空间复杂度 O n O n 时间复杂度 O n O n 如输入 1
  • html跳转页面到自己写的另一个页面,非js

    最简单的跳转页面 记录给渣渣的自己 很low的两个html界面1和2 在1页面上设置一个button 按下按钮 跳转至自己写的2界面 代码如下 div class wrapper div class container h1 Welcome
  • Sqli-labs 15-19

    15关 在输入框内测试Username asd Password 123并点击提交后发现并没有什么卵用 在Username处尝试万能钥匙1 or 1 1 发现成功登录了 接下来看源码分析问题 由于红下划线处的username uname 所
  • 移动app开发如何做接口的版本控制

    移动app为什么要做版本控制 应用升级无法做到全部升级 比如某应用现行1 1版本 某次开发升级后 版本变为1 2 除app界面变化外 后台接口也发生了变化 然而不是所有的用户都在第一时间升级了app 或者由于版本推送不及时 用户忽略更新等原
  • 2020浙江大学软件学院预推免经验

    个人背景 本人为末流211计算机科学与技术专业 且专业排名于保研名额末尾 但是综合排名在中上肯定有保研资格 本科学校最后是以综合排名上报学信网的 而预推免和夏令营对方学校对看的一般是专业排名 预推免报名时本科学校已经出了推免名单了 所以预推
  • Datadog 能成为最大的云监控厂商吗

    Datadog 原本是一家名不见经传的云监控公司 于 2019年9月19日 登陆纳斯达克 上市首日即突破 80亿 美金 上市前还搞了个小插曲 思科在 IPO 前夕提出 70亿美元 全面收购要约 被 Datadog 董事会断然拒绝 时至今日
  • leetcode 55. 跳跃游戏

    一 题意 给定一个非负整数数组 nums 你最初位于数组的第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 二 解法 贪心算法 解法1 计算出 i n u m s
  • Qt程序启动画面播放(gif与swf两种动画格式) - 路上的脚印

    学习Qt有一段时间了 发现一个小问题 网上关于Qt的资料或者总结性的学习及应用文章有点少 比如 Qt完整的API 程序运行之前的启动画面如何按理想效果播放等 每次想在项目中添加一些应用的时候 总是找不到好的书籍或文章可以马上学习 上手 今天
  • 淘宝、1688、京东、拼多多,抖音五个平台的区别分析

    淘宝 淘宝是中国最大的C2C电子商务平台 也是消费者购物的首选平台 淘宝上的商品种类繁多 价格实惠 同时还有很多优惠活动和促销活动 让消费者可以以较低的价格购买到高质量的商品 1688 1688是中国最大的批发市场之一 有数百万的商家在上面
  • Qt为release中可执行程序添加库进行打包并结合inno setup打包生成exe安装文件

    Qt为release中可执行程序添加库进行打包并结合inno setup打包生成exe安装文件 文章目录 Qt为release中可执行程序添加库进行打包并结合inno setup打包生成exe安装文件 一 Qt为release中可执行程序添