pro发布程序图标的方法和构建路径分开的方式选择
发表时间:2023-09-22 06:02:09
文章来源:炫佑科技
浏览次数:162
菏泽炫佑科技
pro发布程序图标的方法和构建路径分开的方式选择
Qt打包成setup.exe安装包 1、简要说明
Qt项目开发完成后,需要对程序进行打包并发布。 由于用户电脑上没有Qt配置环境,所以需要将生成的exe文件和依赖的dll文件复制到一个文件夹中,然后使用Inno Setup打包工具进行打包。 可以发布exe安装包。
2.设置应用程序图标
我们编译生成的exe文件的图标是Qt自带的白框,不太好看。 如何自己设置程序的图标? 首先创建一个ico格式的文件。 网上有很多方法可以将png或jpg图片转换成ico格式的图标文件。 然后将ico文件放在源代码目录下,与.pro文件在同一个文件夹中。 如下所示:
在.pro项目文件中添加:
RC_ICONS = music.ico // 这里的music.ico是我的ico文件的名字,改成你自己的ico文件名
添加后,一定要再次运行qmake,然后再次运行你的程序,这样当你查看文件夹中的debug或exe文件时,就会看到你设置的图标。
3. 发布程序
当前电脑是win10 64位。 以下操作使用32位Qt编译器。 我尝试了64位编译器但失败了。
要发布程序,必须首先获取依赖的dll文件。 有两种方法。 方法一是到Qt安装目录的bin目录下(笔者这里是H:\\\5.12.9\)找到依赖的dll文件。 第二种方法是使用Qt自带的工具.exe生成依赖的dll文件。 这里我们重点介绍第二种方法,步骤如下:
(1)在方法中编译生成exe程序,即选择调试运行的方法。
运行成功后,如果勾选“build”,将源代码路径和构建路径分开,则会在build-music--文件夹下生成exe文件,如下图1所示; 否则,在源代码项目目录下的文件夹中生成exe文件,如下图2所示。
将 music.exe 可执行文件复制到另一个文件夹。 这里我将其复制到H:\,然后在“开始菜单Qt5.12.9”下找到“Qt 5.12.9 (MinGW 7.3.0 32-bit)”运行文件,打开并运行。
执行cd H:\命令进入exe文件所在目录,然后执行dir命令查看目录,*后执行.exe命令。 Qt会自动复制程序所需的所有dll。
当然,有可能有些dll不是我们需要的,比如下面的.dll。 为了使发布程序尽可能小,可以将这些dll一一删除,然后打开exe程序,看看哪些dll删除后打不开。 对于程序,保留它们并删除其余的。
然后复制自带的文件夹,比如下图的image文件夹和文件夹,删除不需要的dll。 后续的exe安装包文件夹如下图所示。
其实到了这一步,你就可以发布整个文件夹了,但是如果你想打包成exe安装包,就需要执行下面的步骤。
4. 封装方案
Inno Setup 是一款免费的安装程序创建软件。 其*大的特点是紧凑、简洁、优雅。 它支持脚本,可以快速创建标准风格的安装界面软件制作,足以完成一般的安装任务。
官方下载地址:#
下载后直接安装即可。
项目开发完成后,需要将程序打包进行分发。 您可以使用 Inno Setup 软件来创建并安装该 exe。 下面详细说明如何打包应用程序:
(1)打开Inno Setup,点击【文件】→【新建】,新建一个脚本向导程序,然后点击【下一步】;
(2)在申请信息中输入“应用名称”、“应用版本”、“应用发布者”、“应用网站”。 这些信息会在脚本中自动生成,然后点击下一步;
(3)填写安装时默认的包文件路径和文件夹名称,然后点击下一步;
(4)选择应用程序的主可执行文件,即你编译生成的exe文件。 点击下面的“添加”,将你的程序运行所需的所有dll、资源和配置文件放在一个文件夹中,然后选择这个文件。 文件夹并单击下一步;
注:添加是添加.exe的父文件夹,其中包含所有依赖的dll等文件。
(5)然后再次默认点击下一步,来到如下界面。 输入要在开始菜单中显示的应用程序名称,需要什么功能,前面打勾,一般默认就可以了,然后点击下一步;
(6)这里可以选择“ File”、“安装前的文件”(如文件等)、“安装后显示信息”等pro发布程序图标的方法和构建路径分开的方式选择,然后点击下一步;
(7)然后再次默认点击下一步,来到如下界面。 选择“安装语言”,点击下一步;
(8)选择“自定义编译输出文件夹”、“编译输出基本文件名”、“自定义安装程序图标文件”和“安装密码”,然后点击下一步;
9) 此处选择是否使用#编译指令。 选择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文件进行安装。