Qt打包成setup.exe安装包

本文介绍了如何使用Qt将项目打包成setup.exe安装包,包括设置exe图标、获取依赖dll、使用InnoSetup打包工具创建安装程序的详细步骤。同时,文章也提及了在打包过程中如何优化和减小安装包大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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文件即可进行安装,

### 回答1: 将Qt程序打包安装包的过程可以分为以下几个步骤: 1. 准备好Qt程序的可执行文件和所需的依赖文件。确保程序可以在目标机器上独立运行,并且没有缺失的依赖项。 2. 创建一个安装目录,用于存放将要打包的文件。可以自定义目录结构,例如bin目录用于存放可执行文件,lib目录用于存放依赖库等。 3.Qt程序的可执行文件和依赖文件复制到安装目录中。确保文件路径与原本程序的路径一致。 4. 创建一个安装脚本或者使用Qt提供的打包工具,例如Qt Installer Framework。安装脚本可以定义安装过程中需要执行的操作,例如创建快捷方式、添加环境变量等。如果使用Qt Installer Framework,可以使用其提供的界面编辑器创建安装向导界面。 5. 对安装目录进行压缩,生安装包。可以选择使用zip、tar或者其他的压缩格式。确保生安装包可以在目标机器上解压缩。 6.安装包进行测试,在目标机器上进行安装和运行测试,确保打包的程序能够正常工作。 总结起来,将Qt程序打包安装包的过程包括准备程序和依赖文件、创建安装目录、复制文件到安装目录、编写安装脚本或使用打包工具、压缩安装目录并进行测试。 ### 回答2: Qt是一个跨平台的C++开发框架,可以方便地开发出图形界面应用程序。Qt程序可以通过打包安装包的方式进行分发和安装,以便用户可以方便地安装和使用。 Qt提供了一个工具Qt Installer Framework来创建安装包。使用该工具,我们可以按照以下步骤打包Qt程序安装包: 1. 首先,我们需要创建一个安装包项目。在创建项目的过程中,我们需要提供一些基本信息,例如程序名称、版本号、制造商等等。这些信息都会在安装包中显示。 2. 接下来,我们需要定义安装包的组织结构。这包括安装目录、文件和文件夹的布局,以及依赖关系。我们可以自定义安装目录的结构,将文件和文件夹放置在适当的位置。 3. 然后,我们可以添加预定义的安装步骤,例如许可协议的接受、安装路径选择、组件选择等等。这些步骤将在安装过程中显示给用户。 4. 我们还可以自定义安装包的界面。Qt Installer Framework提供了一个XML文件来定义安装包的界面,我们可以根据需要进行修改和定制。 5.以上步骤后,我们可以使用Qt Installer Framework提供的工具将安装包编译为可执行文件。这个可执行文件就是我们最终生安装包。 最后,我们可以将生安装包分发给用户,让用户可以方便地进行安装和使用。 总而言之,通过使用Qt Installer Framework,我们可以方便地将Qt程序打包安装包,以方便用户进行安装和使用。 ### 回答3: 要将 Qt 程序打包安装包,可以按照以下步骤进行操作: 1. 确保在 Qt Creator 中配置好项目的构建工具,如编译器和目标平台。 2.Qt Creator 中选择“发布”或“构建”选项,进入构建设置页面。 3. 在构建设置页面中,选择正确的构建配置,如Release。 4. 在构建设置页面中,选择“Windeployqt”工具,并勾选“启用”。 5. 确保 Qt Creator 能够找到 “windeployqt” 工具。通过“工具”菜单 -> “选项” -> “Kits” 设置页面,查看当前配置是否有正确的路径。 6. 点击“构建”按钮开始构建应用程序。 7. 构建完后,进入构建输出目录,应该会有生的可执行文件以及一些依赖的 Qt 动态链接库。 8. 运行 “windeployqt” 工具,该工具会自动查找可执行文件中使用到的 Qt 动态链接库,并将它们拷贝到一个指定目录中。 9. 拷贝完所有依赖文件后,可以将生的这个目录压缩一个 ZIP 文件,或者使用其他打包工具(如Inno Setup,NSIS等)制作一个安装包,按照安装包制作工具的指引进行操作。 10. 安装包制作完后,用户可以通过安装包安装程序,并在目标机器上运行 Qt 程序。 总之,将 Qt 程序打包安装包的关键是使用 “windeployqt” 工具自动查找和拷贝依赖的 Qt 动态链接库,然后使用打包工具将生的文件打包一个安装包,方便用户安装和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值