使用windeployqt和InstallShield打包发布Qt软件的流程

news2024/9/23 15:21:25

前言

    Qt编译之后需要打包发布,并且发布给用户后需要增加一个安装软件,通过安装软件可以实现Qt软件的安装;用于安装软件的软件有很多,这里主要介绍InstallShield使用的流程;

使用windeployqt打包Qt编译后的程序

Qt程序编译后是这样的文件,没有包括依赖的dll环境;此时发布给别人会报错缺少dll文件,因此需要将dll文件打包发布;
在这里插入图片描述

方法一:
如果是VS+Qt联合编译的,需要添加一个VS的环境变量。如果是Qt单独编译,则直接跳到3

  1. 找到VS的安装目录,比如我的是默认安装在C盘。复制路径
C:\Program Files\Microsoft Visual Studio\2022\Community\VC
  1. 打开环境变量,添加一个系统变量,变量名为VCINSTALLDIR,变量值为
C:\Program Files\Microsoft Visual Studio\2022\Community\VC
  1. win+R输入cmd打开命令窗口,通过cd /d命令进入到我们要操作的文件夹(.exe所在文件夹)
cd /d C:\Users\BaiYang\Desktop\asd

或者直接在文件窗口地址栏输入cmd回车。

  1. 执行 “windeployqt ExamSys.exe” 命令,换成自己的.exe名字

方法二:

  1. 先找到windeployqt.exe的位置
    比如说,我的qt安装位置是:
C:\Qt\Qt5.9.6\5.9.6\msvc2015_64\bin\windeployqt.exe

命令行切换到此位置

  1. 再找到自己生成的exe文件位置,比如说,我的是:
G:\bin\Test.exe
  1. cmd进入命令行,执行命令
C:\Qt\Qt5.9.6\5.9.6\msvc2015_64\bin\windeployqt.exe G:\bin\Test.exe

在这里插入图片描述
windeployqt执行后会将依赖的dll文件打包在一起;

使用InstallShield软件发布Qt打包后的文件,制作成程序压缩包

下载及安装InstallShield
InstallShield
百度网盘提取码:abcd
安装过后,把fix文件夹内的文件更新到安装后的system文件夹内;

安装后的InstallShield软件界面是:
在这里插入图片描述

第一步

点击Home->New,选择Basic MSI,这里是管理整个项目的意思,给项目起个名字。
名称为test,会在G盘建立一个test.ism的文件;
在这里插入图片描述

第二步

软件的Installation Designer。这里是整个项目各个参数的设置,可以对项目细节完善。可以先用快捷方式先确定好项目,再从Installation Designer这里完善。

第三步

先用快捷方式完成项目。点击view->ProgectAssistant。进入助手界面。
在这里插入图片描述

第四步

按照最下面一行的提示,逐步修改项目。

  1. 确定软件信息
    在这里插入图片描述
  2. 这里可以直接选默认选项

在这里插入图片描述

  1. 最重要的是这里,确定安装文件,将自己的exe文件和依赖的dll文件添加到文件内;文件夹选择Add Folders(注意软件很容易卡死,随时点击save项目,不然又要从头开始)
    在这里插入图片描述
    在ProgramFilesFolder上面就是CommonFileFolder,这里存放的是软件的一些配置文件等;也可以将这个路径设置成系统环境变量,将dll放在这里,这样你可以安装一个纯exe文件,程序会从系统路径内寻找dll文件;
    像我自己的电脑里便有Common Files里面有之前安装软件存放的配置文件;
    在这里插入图片描述

  2. 这两个可以跳过默认,也可以自己选择
    在这里插入图片描述

  3. 选择安装时的语言
    在这里插入图片描述

  4. 发布程序安装包
    在这里插入图片描述
    点击Build Installation便开始制作安装包,等待制作完成
    在这里插入图片描述

第六步

若是用户安装时需要设定用户的系统变量,比如说path,可以跳回到Installation Designer界面,选择Environment Variables;
在这里插入图片描述
增加系统环境变量
在这里插入图片描述
设置环境变量Path
在这里插入图片描述
对这里的参数说明:
On Install:
          Set:已经存在的环境变量
          Create:创建一个新的环境变量
Placement:
          Replace:替换以前的值
          Prefix:在前面追加值
          Append:在后面追加值
On Uninstall:
          Remove:在卸载的时候删除
          Leave:在卸载的时候保留
Type:
          User:用户变量
          System:系统变量

    以上流程走完就是一个简易的InstallShield发布过程,当然,比如说setup.exe的ICON设置等都可以在Installation Designer慢慢完成;

验证发布

上述流程走完之后,便可以在test.ism同级目录下,生成一个test文件夹;
在这里插入图片描述
在DISK1目录下会看到安装程序,点击会看到安装过程;

在这里插入图片描述
至此,Qt编译生成的exe发布完成;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【八股】2023秋招八股复习笔记5(计算机网络-CN)

文章目录 八股目录目录1、应用层 & HTTP一些http题HTTPS 加密原理(问过)HTTP/1.1 新特性HTTP/2.0 与 RPC(问过)GET 和 POST 比较 2、传输层 & TCPTCP三次握手 & 四次挥手(问过)为什么每次TCP 连…

Java的异常与错误

对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别? Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch&#x…

浅析Linux SCSI子系统:IO路径

文章目录 概述scsi_cmd:SCSI命令result字段proto_op字段proto_type字段 SCSI命令下发scsi_request_fnscsi_dev_queue_readyscsi_host_queue_ready SCSI命令响应命令请求完成的软中断处理 相关参考 概述 SCSI子系统向上与块层对接,由块层提交的对块设备的…

桌面图标不显示

问题 桌面图标不显示 解决办法 鼠标 右击->选择-查看->显示桌面图标

学习创建第一个 React 项目

目标 本篇的目标是配置好基础的环境并创建出第一个 React 项目。 由于之前没接触过相关的知识,所以还需要了解其依赖的一些概念。 步骤主要参考First React app using create-react-app | VS code | npx | npm - YouTube 0. 简单了解相关概念 JavaScript 一种语…

基于未来搜索算法优化的BP神经网络(预测应用) - 附代码

基于未来搜索算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于未来搜索算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.未来搜索优化BP神经网络2.1 BP神经网络参数设置2.2 未来搜索算法应用 4.测试结果:5…

MLCC产生噪音的原因及解决方案

1.内部构造及工作原理 MLCC是Multilayer Ceramic Capacitor多层片式陶瓷电容 决定电容容值大小的主要参数: 真空介电率 相对介电常数K:和MLCC使用材料有关的常数 有效面积S 介电层厚度d 堆叠层数N 所以面积越大堆叠层数越多的MLCC容值越高 2.MLCC产生啸…

shell数据结构

less可以创建一个文件分页 3次a,是不是连续的 重定向输出>会清空文件内容 cp一份新的,或者新建一个 journalctl 查看启动日志 将前面id传给 xargs 通过journalctl -b 查找对应的日志, pi好像的地址 ??&#xff1f…

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part III

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022openCV4.8.0) Part III 用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022openCV4.8.0) Part I_松下J27的博客-CSDN博客 用Cmake build OpenCV后&…

C++设计模式_01_设计模式简介(多态带来的便利;软件设计的目标:复用)

文章目录 本栏简介1. 什么是设计模式2. GOF 设计模式3. 从面向对象谈起4. 深入理解面向对象5. 软件设计固有的复杂性5.1 软件设计复杂性的根本原因5.2 如何解决复杂性 ? 6. 结构化 VS. 面向对象6.1 同一需求的分解写法6.1.1 Shape1.h6.1.2 MainForm1.cpp 6.2 同一需求的抽象的…

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于TSO-XGBoost金枪鱼算…

Android学习之路(11) ActionBar与ToolBar的使用

自android5.0开始,AppCompatActivity代替ActionBarActivity,而且ToolBar也代替了ActionBar,下面就是ActionBar和ToolBar的使用 ActionBar 1、截图 2、使用 2.1、AppCompatActivity和其对应的Theme AppCompatActivity使用的是v7的ActionBa…

数据分析基础(1)——超实用‼️Excel 常用函数和实用技巧

学习教程:☑️ 懒人Excel - Excel 函数公式、操作技巧、数据分析、图表模板、VBA、数据透视表教程 目录 一、Excel知识体系✨ 二、Excel 常用函数💡 三、Excel 技巧 🤔 补充: 1、自学数据分析学习路线 2、数据查询网站 一、…

服务器安全-增加clamav杀毒

1.安装epel源 yum install epel-release 2.安装 clamav yum install clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd pcre* gcc zlib zlib-devel libssl-devel libssl openssl …

代码随想录第32天|122.买卖股票的最佳时机 II,55. 跳跃游戏 ,45. 跳跃游戏 II

122.买卖股票的最佳时机 II 122. 买卖股票的最佳时机 II 思路比较简单 class Solution {public int maxProfit(int[] prices) {int res0,sum0;for(int i0;i<prices.length-1;i){if(prices[i1]-prices[i]>0){sumprices[i1]-prices[i];}ressum>res?sum:res;}return …

比较重合点的排斥能

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A中有2个1&#xff0c;B中有1个1&#xff0c;有一个点重合&#xff0c;排列组合&#xff0c;统计迭代次数并排序。 得到数据 构造平均列A 构造平均列…

JDK介绍

JDK,JRE和JVM之间的关系 JVM是运行环境&#xff0c;JRE是含运行环境和相关的类库&#xff0c;跟node环境是一个意思 JDK目录介绍 目录名称说明bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。conf该路径下存放了JDK的相关配置文件include该路径下存放了一些…

DevOps系列文章 之 Python基础

流程控制和循环 if语句 它由三部分组成: 关键字本身, 用于判断结果真假的条件表达式, 以及当表达式为真或者非零时执行的代码块 可支持else和elif;条件表达式并不需要用括号括起来 1、标准if 条件语句的语法如下&#xff1a; if expression:expr_true_suite 如果表达式的值…

Java获取环境变量和运行时环境信息和自定义配置信息

System.getenv() 获取系统环境变量 public static void main1() {Map<String, String> envMap System.getenv();envMap.entrySet().forEach(x-> System.out.println(x.getKey() "" x.getValue())); } System.getenv() 获取的是操作系统环境变量列表&…

nginx-获取客户端IP地址

上有服务器与客户端中间是有nginx代理服务器的&#xff0c;上游服务器如何获取客户端真实ip地址&#xff1f; nginx代理服务器设置X-Forwarded-For的header参数&#xff0c;代理服务器通过remote_addr获取客户端ip地址&#xff0c;将ip地址写入nginx代理服务器的X-Forwarded-Fo…