使用windeployqt与inno setup实现windows下Qt程序发布打包

2023-11-20

一、使用windeployqt拷贝依赖文件

在发布生成的exe程序时,需要复制一大堆dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。

因此Qt官方开发环境里自带了一个工具:windeployqt.exe。

1、设置windeployqt.exe目录为环境变量

以本机Qt5.12.3,MSVC64位环境为例,

工具路径为D:\Qt\Qt5.13.0\5.13.0\msvc2017_64\bin,如下:

在这里插入图片描述

请找到与自己工程使用的编译器版本一致的目录下,并将该目录设置为环境变量;

以保证在cmd中可以直接输入windeployqt以找到windeployqt.exe。

2、执行依赖拷贝

工程在release模式编译后,假设生成PathTest.exe,

然后将PathTest.exe与工程中所有自己编写的依赖dll、图标等全部拷贝到D:/test。

然后在cmd中,进入test目录,如下:

cd /d D:\test

输入拷贝依赖命令,如下:

windeployqt PathTest.exe

正在拷贝中:

在这里插入图片描述

依赖拷贝结果:

在这里插入图片描述

这个例子比较简单,所以没什么多余文件。

此时,将此目录拷贝到其他没有装qt的电脑上,应该也是可以执行的。

如果不行,那么还要根据缺哪些dll,再进行排查添加。

在保证程序可以正常执行的情况下,进行下一步打包操作。

二、使用inno setup对程序进行打包

inno setup官网下载地址:

https://jrsoftware.org/isdl.php

任意选择一个链接进行下载。

在这里插入图片描述

inno setup工具使用比较简单,可以通过向导生成脚本,也可以直接编辑脚本;

然后对脚本进行编译,可以生成安装包exe。

下面讲解通过向导生成脚本

1、选择File->New,弹出向导对话框,如下:

在这里插入图片描述

2、选择Next,弹出应用信息对话框,如下:

在这里插入图片描述

根据如下含义,填入相应内容。

  • Application name:软件名称,即软件在开始菜单中显示的名字
  • Application version:软件版本号
  • Application publisher:软件的出版商
  • Application website:软件的网站
3、选择Next,弹出应用安装路径对话框,如下:

在这里插入图片描述

  • Application destination base folder:软件安装路径,Program Files folder表示C:\Program Files (x86)。也可以自定义安装路径。
  • Application folder name:软件安装目录名称,My App。

结合上面2个输入,表示应用程序默认安装到C:\Program Files (x86)\My App目录下。

4、选择Next,弹出选择程序文件对话框,如下:

在这里插入图片描述

分别添加主程序exe路径,以及主程序的资源、dll等其他依赖文件路径。

5、选择Next,勾选一些信息,一般默认,如下:

在这里插入图片描述

6、选择Next,选择license文件,安装前、后分别显示的信息文件,如下:

在这里插入图片描述

这里,没有,所以留空。

7、选择Next,选择安装模式,一般默认,如下:

在这里插入图片描述

8、选择Next,选择安装语言,一般默认,如下:

在这里插入图片描述

9、选择Next,打包编译设置,如下:

在这里插入图片描述

分别设置如下内容:

  • 在哪个目录下生成安装包exe文件;
  • 安装包文件的名称;
  • 安装包文件的图标;
  • 运行安装包时需要输入的密码。
10、选择Next,预处理器信息,一般默认,如下:

在这里插入图片描述

11、选择Next,完毕。选择Finish。

在这里插入图片描述

选择是,对当前脚本文件进行编译,并保存脚本文件。

在这里插入图片描述
生成的脚本文件内容如下:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "My App"
#define MyAppVersion "1.5"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "PathTest.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{55AD3461-9F11-45C0-A74F-6BB8374A3268}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=D:\output
OutputBaseFilename=mysetup
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\test\PathTest.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\test\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\test\Qt5Core.dll"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

编译完成

在这里插入图片描述

生成了mysetup.exe安装包

在这里插入图片描述



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

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

使用windeployqt与inno setup实现windows下Qt程序发布打包 的相关文章

  • 【转】使用windeployqt.exe进行依赖查找打包

    原文 xff1a https blog csdn net u011822862 article details 52166940 Qt 官方开发环境使用的动态链接库方式 xff0c 在发布生成的可执行程序时 xff0c 需要复制可执行程序的
  • 把Spring Boot项目打为可执行jar包

    前言 这两天没太多事了 就去学了一下后端的内容 发现只要有基础了 学其他的还是挺快的 本篇解决的是SpringBoot打成可执行的jar包 在网上找别人直接用命令 可是我这边显示错误 于是就自己查了查 记录一下 步骤 使用IDEA 一 使用
  • Inno Setup打包教程

    简述 Inno Setup 是一个免费的 Windows 安装程序制作软件 第一次发表是在 1997 年 现在已经更新到Inno Setup 5了 Inno Setup是一个十分简单实用的打包小工具 可以按照我们自己的意愿设置功能 稳定性也
  • Inno Setup 系列之添加管理员权限

    需求 Inno Setup打包的程序安装完成后运行失败 这个是因为权限不够 打包的应用需要管理员权限 解决 1 在 Setup 节点添加 PrivilegesRequired admin 2 在Inno Setup的安装目录下有个Setup
  • Linux下Qt程序运行时找不到so的解决办法

    一 全局性设置 将so放入相应的系统lib目录 修改环境变量 在环境变量中添加so所在路径 修改一些文件 在其中指定so所在路径 大概有上面的这3种方式 就不详细说了 相信大家都清楚 二 指定编译选项 上面介绍的方式 无一例外 都需要修改环
  • inno setup打包脚本总结

    inno setup是比较简单好用的一款打包工具 下面以打包HelloWorld exe为例进行说明 一 打包目录的建立 创建source目录 用于放置主程序 依赖dll 资源等待打包文件 创建output目录 用于存放生成的安装包 Hel
  • Idea SpringBoot多模块项目打包血泪史

    本文主要介绍基于Idea的SpringBoot多模块打包中遇到的各种问题以及解决方法 基本概况介绍 小弟之前是用的myeclipse进行的开发 但是在建立多模块的时候却错误的使用了web archtype 然后强转的SpringBoot 在
  • Qt for Windows:Qt 5.4.0 MinGW 静态编译版本制作

    本文将讲述如何在Windows中 用源码版本的Qt制作出一个可以一键静态编译Qt 我使用的环境是 Windows7 64位 旗舰版 大致流程 1 安装Qt 源码版 以及其他必要的环境 2 编译 安装 3 配置 4 使用 正文分割线 1 安装
  • NSIS简介

    1 简介 NSIS是一款帮助开发者创建Windows安装包的工具 NSIS通过NSIS脚本语言 NSIS Script 来配置安装过程中的信息 通过灵活的脚本方式 NSIS可以实现从最简单的文件拷包制作 到需要读写注册表 配置环境变量 以及
  • Qt Install Framework使用方法

    Qt程序的打包发布现在已经可以通过其发布的Installer Framework框架来完成 通过修改一些配置文件即可实现 首先 现在该框架官网提供1 3 0 1 4 0和1 5 0版本的下载 本文书写时 根据有新的谁他吗还用旧的准则 下载1
  • 使用linuxdeployqt在linux下进行Qt打包发布(超详细)

    首先 来说下 本教程实现的功能 在linux下对开发的Qt应用 进行拷贝依赖文件so等 并打成deb安装包 实现可安装 卸载 安装完毕自动在开始菜单下和桌面添加快捷方式 卸载后自动删除快捷方式 以及删除应用生成的log文件 测试环境 ubu
  • Qt for iOS:将ipa安装包发布到App store

    终于到了这一步了 我希望你阅读这篇文章的时候 已经按照顺序阅读了我之前的文章 Qt for iOS 基础环境搭建 Qt for iOS 真机调试环境部署 Qt for iOS 申请发布证书 App配置文件 Qt for iOS 从Qt工程到
  • Qt定制化安装包工具

    Qt定制化安装包 文章目录 Qt定制化安装包 Qt定制安装版1 0 0 0 简述 效果图 1 一键式脚本生成安装包build bat 2 安装界面 3 安装中 4 完成安装 6 安装结果 安装目录 D Program Files x86 Y
  • tauri打包慢:解决tauri的打包慢以及超时的方法

    打包的命令 yarn tauri build 打包的时候 会下载一个依赖包 由于这个依赖包是在github上下载的 因此会很慢或者超时 可以将这个地址 https github com wixtoolset wix3 releases do
  • Ubunt文件压缩和解压、打包和解包

    Ubunt文件压缩和解压 打包和解包 一 压缩和解压 zip tar gz tar bz2 1 zip 优点 支持不同的操作系统平台 如Linux Windows Mac OS 缺点 支持的压缩率不是很高 压缩 zip r file nam
  • qt5.5程序打包发布以及依赖

    玩qt5也有一段时间了 惭愧的是一直没有好好的发布过程序 因为写的都是小程序没啥需要用到发布 而且qt也说不上很熟悉 本来打算到基本掌握qt之后再来研究研究怎么打包程序 最近晚上的空闲时间多了 闲着也是闲着 于是便来试试 在网上搜索了一下资
  • inno setup制作的安装包,安装后以管理员身份启动

    添加管理员权限 1 在 Setup 节点添加 PrivilegesRequired admin 2 进入安装目录 找到文件SetupLdr e32 这是一个二进制配置文件 需要用到ResHacker exe这个工具修改 找到
  • 多次使用dpkg -i重复安装导致报错

    使用dpkg i安装deb 报错如下 报错时 使用apt get remove xxx亦无法卸载 报错原因 使用dpkg i第一次安装a deb时 正常安装 无报错 在未卸载a deb时 直接使用dpkg i再次安装a deb 实则本次安装
  • uni-app打包ios应用后,屏幕无法占满,上下出现黑框

    软件打包后是成功的 功能也都正常 就是打开软件后上下都出现了黑框 整个软件变小了 5s的屏结果运行的是4s的效果 就像ipad运行了iphone软件一样的那种感觉 这是由于ios缺少启动图引起的 勾选通用启动界面即可 在manifest j
  • “警告:找不到 GCC 安装目录。g++.exe 必须位于路径中。”使用windeployqt时

    当我跑步时windeployqt要部署我的应用程序 我收到以下警告 Warning Cannot find GCC installation directory g exe must be in the path 尽管我已经设置了Path环

随机推荐

  • 一个关于jvm堆溢出引发的思考

    在本地测试无误的程序 放上正式服时 出现了堆溢出 本地是Windows系统下的 服务器是linux系统 后来经过测试发现是我在本地跑程序时 在eclipse中添加了如下参数 此处先解释下上面各参数的的含义 Xms512m 堆的最小值 Xmx
  • mysql视图

    一 什么是视图 视图是指计算机数据库中的视图 是一个虚拟表 其内容由查询定义 同真实的表一样 视图包含一系列带有名称的列和行数据 但是 视图并不在数据库中以存储的数据值集形式存在 行和列数据来自由定义视图的查询所引用的表 并且在引用视图时动
  • Java使用反射实现IOC容器

    前面写过怎么通过Java的反射技术实现对象的创建和管理 达到IOC的效果 但是没有讲设计的思路 直接上代码 导致很多人没有思路 因此今天具体的讲IOC的编写思路理清 这里单纯的通过Java中的反射创建对象 至于扩展的部分会有提示思路 既然提
  • 【深度解析→博文总结】李宏毅机器学习2023作业05Transformer(Machine Translation)

    文章目录 系列文章 简要说明 视频分享 作业详情 调参记录 Simple Baseline 15 05 Medium Baseline 18 44 Strong Baseline 23 57 Boss Baseline 30 08 资源链接
  • CVE-2019-11043(PHP远程代码执行漏洞)

    一 漏洞描述 CVE 2019 11043 是一个远程代码执行漏洞 使用某些特定配置的 Nginx PHP FPM 的服务器存在漏洞 可允许攻击者远程执行代码 向Nginx PHP FPM的服务器 URL发送 0a 时 服务器返回异常 该漏
  • windows配置检查

    文章目录 2 1 账号口令 2 1 1 检查是否已正确配置密码最长使用期限 2 1 2 检查是否已正确配置密码长度最小值 2 1 3 检查是否已正确配置 强制密码历史 2 1 4 检查是否已正确配置帐户锁定时间 2 1 5 检查是否已正确配
  • 操作系统简史(1)东方会有新的操作系统诞生吗?让历史告诉未来

    打造一个新的操作系统很难 打造一个新的操作系统不难 难的是建立一个以之为核心的生态系统 估计大家都被这两个问题给困惑过 第一个问题的答案是 有难度 但也不像许多人想象的那样难 如果不是这样 那么我们今天就不会用到Windows 不会用到Li
  • 机器学习笔记1—泰勒展开式和牛顿法

    写在前面 自学机器学习的菜鸟一枚 希望通过记录博客的形式来记录自己一点点的进步 下面都是学习过程中自己的一些思考和学习 希望大神们批评指正 1 1 泰勒展开式 1 1 1泰勒展开式入门 首先 百度了一波 搜到了一个泰勒展开式入门的短短6分钟
  • Linux命令行基本用法总结【自用】

    1 awk 这条语句只能说非常牛逼 我还在傻傻的写程序处理字符文件时 被awk劝退 深度好文 http www zsythink net archives 1336 主要的用法就是 awk F分隔符默认为空格 BEGIN 代码 代码 END
  • apollo配置中心启动失败,坑的一批

    1 按照官方文档一步一步来的 启动失败 2 看启动日志发现是数据库连接的问题 3 可是我防火墙都关了 数据库设置的还是所有机器可连接 而且还是本机数据库 以为是数据库的原因 试了好多方法 甚至用了阿里云服务器中的数据库尝试 还是连接失败 有
  • python爬虫二十三:使用fiddler抓取app数据(三)

    1 什么是fiddler Fiddler是 个http协议调试代理 具 它能够记录并检查所有电脑和互联网之间的http https stp等通讯 它 持IE Chrome FireFox等等浏览器 可以在phone pad等移动设备进 连接
  • 13.前端jQuery之【入门要点】【选择器】【筛选器】

    目录 1 jQuery基本要点 2 jQuery选择器 3 jQuery筛选器 1 jQuery基本要点 1 jQuery 引入方式 write less do more 官网https jquery com 1 方式一 下载jQuery压
  • html align 属性,align-content

    align content属性 含义 设置自由盒内部各个项目在垂直方向排列方式 使用条件 必须对父元素设置自由盒属性display flex 并且设置为横向排列以及换行flex flow row wrap 这样这个属性的设置才会起作用 注意
  • 域名解析ip地址的过程

    浏览器会把输入的域名解析成对应的IP 其过程如下 1 查找浏览器缓存 因为浏览器一般会缓存DNS记录一段时间 不同浏览器的时间可能不一样 一般2 30分钟不等 浏览器去查找这些缓存 如果有缓存 直接返回IP 否则下一步 2 查找系统缓存 浏
  • C++之switch case语句详解

    我们已经了解 if else 可以用来描述一个 二岔路口 我们只能选择其中一条路来继续走 然而 有时候我们会遇到一些 多岔路口 的情况 用if else 语句来描述这种多岔路口会显得非常麻烦 而且容易把思路搅浑 比如程序4 2 2就是一个用
  • [计算机毕业设计]深度相机稀疏点云分类

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • ios系统脚本服务器加速,让iOS系统加速飞起来 speed intensifier插件让iOS系统加速

    由于系统的限制 在动画以及程序打开时间和速度方面基本上在iOS设备当中都是固定的 虽然默认的速度并不算太慢 基本上符合大多数用户的使用习惯 但是还是有一部分用户想方设法的想要让程序打开的速度变快一些 这里小编就带给大家一款名为 speed
  • 筛选sql中一列的重复数据及重复次数

    SELECT PROJECT CODE COUNT PROJECT CODE FROM meng project info GROUP BY PROJECT CODE HAVING COUNT PROJECT CODE gt 1 结果
  • TS复习-----TS中的类

    目录 概述 类的定义 类的继承 类的静态方法和属性 类里面的修饰符 抽象类 多态 getters与setters readonly修饰符 概述 类 Class 定义了一切事物的抽象特点 对象 Object 类的实例 面向对象 OOP 三大特
  • 使用windeployqt与inno setup实现windows下Qt程序发布打包

    一 使用windeployqt拷贝依赖文件 在发布生成的exe程序时 需要复制一大堆dll 如果自己去复制dll 很可能丢三落四 导致exe在别的电脑里无法正常运行 因此Qt官方开发环境里自带了一个工具 windeployqt exe 1