Qt打包成setup.exe安装包

一、简述

Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以发布了。

二、设置应用程序图标

我们编译好生成的 exe 文件的图标是 Qt 自带的一个白色的框框,不太好看,怎么能够自己设置程序的图标呢。先创建一个 ico 格式的文件,网上有很多在线就可以把 png 或 jpg 的图片转成 ico 格式的图标文件,然后把 ico 文件放到源代码目录下,就是 .pro 文件的同一文件夹下。如下图所示:

在.pro项目文件中添加:

RC_ICONS = music.ico // 这里的music.ico是我的ico文件的名字,改成你自己的ico文件名

添加完后一定要重新 qmake 一遍,然后再运行一遍你的程序,这样再看你的 debug 或者 release 文件夹下的 exe 文件就会有你设置好的图标了。

三、发布程序

目前电脑是win10 64位,以下操作使用的是32位的Qt编译器,64位编译器试过了无法成功。

发布程序首先要获得所依赖的 dll 文件,这里有两种方法。方法一就是去 Qt 安装目录的 bin 目录(笔者这里是H:\Qtcreator\Qtcreator\5.12.9\mingw73_32)中找所依赖的 dll 文件。方法二就是使用 Qt 自带的发布程序工具 windeployqt.exe,可以生成所依赖的 dll 文件。这里着重讲解第二种方法,步骤如下:

(1)以 Release 方式编译生成 exe 程序,也就是调试运行的方式选择 Release

运行成功后,如果勾选了 “shadow build” 将源码路径和构建路径分开,那么将在 build-music-Desktop_Qt_5_12_9_MinGW_32_bit-Release 文件夹下生成 exe 文件,如下图1所示; 否则在源码工程目录下的 release 文件夹下生成 exe 文件,如下图2所示。

将 music.exe 可执行文件复制到别的文件夹下,这里我复制到 H:\QMusic 下,然后在 “开始菜单Qt5.12.9” 下找到 “Qt 5.12.9(MinGW 7.3.0 32-bit)” 运行文件,打开运行。

执行 cd H:\QMusic 命令进入exe 文件所在目录下, 再执行 dir 命令查看目录,最后执行 windeployqt cleanRobot.exe 命令,Qt 就会自动把该程序所需要的所有 dll 拷贝过来。

当然,有可能有些 dll 不是我们需要的,例如下面的 D3Dcompiler_47.dll,为了使发布程序尽可能的小,可以把这些 dll 一个一个删掉,再打开 exe 程序,看哪些 dll 是删掉后就打开不了程序的,保留下来,剩下的删除即可。

再将自带的文件夹,例如下图的 image 文件夹、myMusic文件夹复制过来,删掉不必要的 dll,之后的 exe 安装包文件夹如下图所示。

其实到这一步,就可以将整个文件夹发布出去了,但如果想打包成一个 exe 安装包,就要进行下面的步骤了。

四、打包程序

Inno Setup 是一个免费的 Windows 安装程序制作软件。小巧、简便、精美是其最大特点,支持 pascal 脚本,能快速制作出标准 Windows2000 风格的安装界面,足以完成一般安装任务。

官方下载地址:http://www.jrsoftware.org/isdl.php#stable

下载后直接安装即可。

项目开发完成之后,需要打包程序发行,可以使用 Inno Setup 软件制作安装 exe。以下详细讲解如何打包应用程序:

(1)打开 Inno Setup Complier,点击 【file】→【new】,新建一个脚本向导程序,然后点击【next】;

(2)在应用程序信息中输入 “应用程序名称”、“应用程序版本”、“应用程序发布者”、“应用程序网站”,这些信息会自动在脚本中生成,然后点击下一步;

(3)填写打包文件在安装时默认的路径及文件夹名,然后点击下一步;

(4)选择应用程序的主执行文件,也就是你编译生成的 exe 文件,下面点击 “Add folder ”,把所有你的程序运行需要的 dll 和资源以及配置文件放在一个文件夹里,选择这个文件夹,然后点击下一步;

注:Add folder 是添加 .exe 的父文件夹,即将依赖的 dll 等文件全部包含在内。

(5)接着再次默认点击next,来到以下界面。输入应用程序在开始菜单中显示的名字,需要哪些功能,在前边打上对勾,一般默认即可,然后点击下一步;

(6)这里可以选择 “许可文件”,“安装前的文件”(如 Readme 文件等),“安装后显示信息” 等,然后点击下一步;

(7)接着再次默认点击next,来到以下界面。选择 “安装语言”,然后点击下一步;

(8)选择 “自定义编译器输出文件夹”、“编译器输出基本文件名”、“自定义的安装程序图标文件”及“安装密码”,然后点击下一步;

9)在这里选择是否使用 #define 编译指令,选择 yes 也就是在生成的脚本里使用 #define 宏定义一些常量,方便脚本编写,勾不勾选随意,然后点击下一步;

最后一步点击finish后,会询问你是否立即编译新的脚本,我们默认一直点yes。这个脚本是根据刚才我们前面填写的那些内容自动生成的,可以直接使用编译,也可以自己重新编写,下面贴出生成的脚本代码。

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName "QMusic"
#define MyAppVersion "1.0"
#define MyAppExeName "music.exe"
#define MyAppAssocName MyAppName + " File"
#define MyAppAssocExt ".myp"
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt[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={{D7AE9662-51F1-4698-9E39-97DEA943C371}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName=H:/exe_file
ChangesAssociations=yes
DefaultGroupName={#MyAppName}
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=H:\exe_file
OutputBaseFilename=music
Password=123456
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: "H:\QMusic\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "H:\QMusic\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""[Icons]
Name: "{group}\{#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
  • 运行过程中出现错误,可以直接在脚本中进行修改。
  • 如果要打包出新版本的 exe 安装包文件,不需要再将上面流程走一遍,只需要将原先的 exe 可执行文件替换掉,再打开原先生成的脚本文件运行(在inno setup Compiler软件上运行脚本文件),即可生成新版本的 exe 安装包文件。

最后就生成了 exe 安装包文件,点击打开exe文件即可进行安装,

Qt打包成setup.exe安装包相关推荐

  1. 【Electron】 NSIS 打包 Electron 生成exe安装包

    上一篇文章[Electron] Electron 开发桌面应用(一) 编写→运行→打包我们已经得到了electron打包好的应用了,目录如下,但是我们如何整合成一个安装程序,发给客户使用呢? 这一篇文 ...

  2. 使用nwjs将H5页面打包为桌面exe安装包

    1.下载nwjs 链接:https://pan.baidu.com/s/1Ng-Q7dsJ3stt6BfuF7WhgA  提取码:yyx0 2.新建package.sjon {     "m ...

  3. Qt之程序发布以及打包成exe安装包

    一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...

  4. Qt学习之Windows下Qt应用程序打包成exe安装包

    本文介绍如何将exe可执行程序打包成exe安装包,打包完的安装包可以直接在Windows下安装,需要用到 Inno Setup 安装程序制作软件工具,工具下载完之后直接安装即可. 工具下载: 打包安装 ...

  5. 利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包

    原文:利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包 因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户 ...

  6. jar包使用exe4j打成可双击运行的.exe文件和使用Inno Setup Compiler生成.exe安装包教程

    一.工具下载与准备 1.exe4j下载地址:链接:https://pan.baidu.com/s/156dLCKpIRDQdUZxKKvWjqA 提取码:q6fx 2.Inno Setup Compi ...

  7. Inno Setup 制作exe安装包

    Inno Setup 制作exe安装包 前言: 使用Inno Setup制作exe安装包,首先需要一个可运行的exe程序,然后下载Inno Setup工具,最后才是制作安装包的过程. exe主程序 此 ...

  8. ppt录屏+Qt打包成exe

    1.录屏推荐 PPT-插入-屏幕录制 2.Qt打包成exe程序 参考博客:https://blog.csdn.net/lady_killer9/article/details/89975504 2.1 ...

  9. 使用Qt Installer Framework制作软件安装包

    概述 Qt Installer Framework(缩写QIF)是Qt官方用于生成软件安装包的工具.包括Qt Creator和Qt Installer Framework自身的安装包都是由这个工具制作 ...

最新文章

  1. 【Qt】Q_PROPERTY():属性系统
  2. 模拟信号与离散信号之间的频率关系(由模拟信号采样得到的离散信号)
  3. WebStorm无法显示文件夹目录
  4. Java JFrame实现全屏的四种方式
  5. java开源游戏下载安装_开源java扫雷游戏,Swing版。
  6. QTP中对用户自定义环境变量的XML操作的几个函数
  7. [Cake] 2. dotnet 全局工具 cake
  8. mysql判断表字段或索引是否存在,然后修改
  9. 车联网就是车-路-云-图-网
  10. WIFI状态下SecoClient链接故障
  11. 批量创建文件夹-批处理(一)
  12. jvm gc垃圾回收情况
  13. 云片网短信服务使用Java
  14. 前端根据后端数据生成表格 行列合并 指定表头
  15. Android逆向-实战so分析-某洲_v3.5.8_unidbg学习
  16. 文本生成图像这么火,你需要了解这些技术的演变
  17. 研究区分onbeforeunload事件是刷新还是关闭
  18. 如何设置select-option的多项起始默认值
  19. PYthon作业通讯录文件中存有若干联系人的信息,每个联系人的信息由姓名和电话号码组成。 编写程序,完成以下功能: 输入姓名,若通讯录文件中存在,则讲该联系人信息输出;
  20. js的阻塞加载、延迟加载和异步加载

热门文章

  1. 剑指offer46. 把数字翻译成字符串
  2. lua和python谁更适用于嵌入MMORPG?
  3. 西工大计算机夏令营面试
  4. 【特色小镇】智慧小镇:小镇建设总体规划方案
  5. java取字符串后6位_java截取字符串后几位字符
  6. 星座运势,周公解梦流量主微信小程序源码下载
  7. 什么是电商ERP,有什么作用
  8. 【无标题】翻译数字孪生经典文章Shaping the digital twin for design and production engineering
  9. blablabla...
  10. 欧拉系统安装与部署NextCloud与常见部署问题解决以及数据盘迁移