qt在windows下打包全解

接触qt有一段时间了,要学习的东西很多,记录下在工作中解决的实际问题。

文章目录

  • 打包过程
    • 生成依赖项
    • 拷贝第三方库
    • 拷贝VC运行环境
    • 补全Qt运行环境
    • 使用Inno Setup打包

打包过程

软件打包都是大同小异的,主要是收集依赖项(库、资源图片等),使用打包工具(脚本)打包。话不多说,直接进入正题。

生成依赖项

把编译生成的exe文件拷贝到一个新目录。
qt在windows下打包全解_第1张图片
此时要特别注意,不能通过命令行或git bash等工具执行指令,必须从选择qt自带工具,如下:
qt在windows下打包全解_第2张图片

然后执行指令:windeployqt G:\win32_pkg\GameLiveDemo.exe
qt在windows下打包全解_第3张图片

此时,win32_pkg目录下多了很多依赖文件。
qt在windows下打包全解_第4张图片

拷贝第三方库

如果程序中有第三方库,运行会报错,根据提示拷贝第三方库即可。
qt在windows下打包全解_第5张图片
此时,在本地电脑上可正常运行了。

拷贝VC运行环境

根据Qt使用的编译套件来选择运行库,笔者使用的是MSVC2017,去VS2017拷贝运行时库。本地参考路径:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.16.27012\x64\Microsoft.VC141.CRT

补全Qt运行环境

本以为所有依赖项均找到,发给同事运行报错,platforms里面只有一个dll文件。对比一下Qt安装目录,将其余的dll全部拷过来,运行就正常了。
qt在windows下打包全解_第6张图片
注:如果运行还报错,可根据提示在bin目录下拷贝对应的文件。

使用Inno Setup打包

inno setup安装包,点击此处下载

安装完Inno Setup后,根据实际情况,修改以下脚本生成安装包。


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

;自定义项:MyAppName、MyAppVersion、MyAppPublisher、MyAppExeName
#define MyAppName "游戏直播Demo"
#define MyAppVersion "0.0.1"
#define MyAppPublisher "zego"
#define MyAppURL "..."
#define MyAppExeName "GameLiveDemo.exe"

;自定义项:AppId(应用ID,唯一)、 OutputBaseFilename(安装文件名)
[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={{E52068CF-F210-2CBA-A228-EC0282109BEA}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=/
OutputBaseFilename=游戏直播Demo
Compression=lzma
SolidCompression=yes     

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

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

[Files]
;依赖项:单个文件,或某一类文件
Source: "*.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "GameLiveDemo.exe"; DestDir: "{app}"; Flags: ignoreversion

;依赖项:文件夹
Source: "iconengines\*";DestDir: "{app}\iconengines\";
Source: "imageformats\*";DestDir: "{app}\imageformats\";
Source: "platforms\*";DestDir: "{app}\platforms\";
Source: "styles\*";DestDir: "{app}\styles\";
Source: "translations\*";DestDir: "{app}\translations\";

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

你可能感兴趣的:(Qt学习笔记,qt,windows,Inno,Setup打包,qt打包,通用脚本)