qt在windows下打包全解

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

打包过程

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

生成依赖项

把编译生成的exe文件拷贝到一个新目录。
请添加图片描述
此时要特别注意,不能通过命令行或git bash等工具执行指令,必须从选择qt自带工具,如下:
请添加图片描述

然后执行指令:windeployqt G:\win32_pkg\GameLiveDemo.exe
请添加图片描述

此时,win32_pkg目录下多了很多依赖文件。
请添加图片描述

拷贝第三方库

如果程序中有第三方库,运行会报错,根据提示拷贝第三方库即可。
请添加图片描述
此时,在本地电脑上可正常运行了。

拷贝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全部拷过来,运行就正常了。
请添加图片描述
注:如果运行还报错,可根据提示在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
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值