使用Qt Installer Framework将自己的程序打包成安装包程序
制作安装包程序就是将自己的程序打包成一个可执行的exe,双击之后进行安装。
1. 在制作安装包程序之前需要安装qt官方提供的安装包制作工具Qt Installer Framework
去qt官方网址,下载对应的 Qt Installer Framework https://download.qt.io/official_releases/qt-installer-framework/4.6.1/ , 我的电脑是win1064位的,因此我选择了一个64为版本
安装过程很简单,就是一路点击知道完成,具体的可以百度。
安装好之后,需要设置环境变量才能在任何地方都能通过命令行调用,
将Qt Installer Framework的bin目录添加到环境变量中,这样无论在哪个命令行窗口中都能使用Qt Installer Framework进行程序打包
2. 创建打包所需配置文件
在进行打包之前需要按照规定创建一些必要的目录,并在目录中创建对应的文件用来只是打包工具如何生成安装程序。
创建一个空文件夹pack,并在目录下创建如下两个文件夹
config中创建一个config.xml文件
config.xml中内容如下,主要用来指导程序安装时开始菜单中图标如何存放的信息
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>test</Name>
<Version>1.0.0</Version>
<Title>test</Title>
<Publisher>子安</Publisher>
<!-- Directory name is used in component.xml -->
<StartMenuDir>test</StartMenuDir>
<TargetDir>@HomeDir@/test</TargetDir>
</Installer>
在packages中随便创建一个目录如下:
并在该目录下创建两个文件夹 data 和meta
在meta中创建两个文件如下:
其中installscript.qs内容如下:
function Component()
{
// default constructor
}
Component.prototype.createOperations = function()
{
// call default implementation to actually install README.txt!
component.createOperations();
// 这里创建桌面图标和开始菜单图标,注意指定的iconPath必须是ico结尾,否则部分电脑可能显示不了图标
if (systemInfo.productType === "windows") {
component.addOperation("CreateShortcut", "@TargetDir@/ScreenShotTool.exe", "@StartMenuDir@/ScreenShotTool.lnk",
"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/images/icon.ico",
"description=Open Chinaxinge");
//创建桌面快捷方式
component.addOperation("CreateShortcut", "@TargetDir@/ScreenShotTool.exe", "@DesktopDir@/ScreenShotTool.lnk", "iconPath=@TargetDir@/images/icon.ico",
"workingDirectory=@TargetDir@");
component.addOperation("CreateShortcut", "@TargetDir@/ScreenShotTool1.exe", "@StartMenuDir@/UninstallScreenShotTool.lnk",
"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/images/icon.ico",
"description=Open Chinaxinge");
}
}
package.xml的文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>ScreenShotTool.exe</DisplayName>
<Description>A ScreenShotTool.exe, accessible through a start menu entry.</Description>
<Version>1.0.0-1</Version>
<ReleaseDate>2023-10-01</ReleaseDate>
<Default>true</Default>
<Script>installscript.qs</Script>
</Package>
在以上都准备好之后, 就进入正题了,我们把通过release编译好的程序copy到data目录,我这里在 pack\packages\org.qtproject.ifw.example\data
3. 打包发布包
在上述操作都完成了之后,就可以着手进行发布包的制作了, 我们进入到data目录,然后通过qt提供的windeployqt工具制作发布包,最简单的方式就是进入指定目录,然后执行 windeployqt xxxx.exe
执行结束,在data目录下会有发布包需要的所有文件
这个时候,你双击执行一下,看data中的程序是否可以正常执行,如果能正常运行说明发布包制作成功。
4. 将发布包按照config要求打包成可执行的安装程序
在上述操作都完成之后, 我们就可以将程序打包成可执行程序可。
我们进入到pack目录,然后执行一下命令:
binarycreator --offline-only -c config/config.xml -p packages install.exe -v
如果程序文件比较多,可能会耗时很久,需要进耐心等待。等全部执行完就可以在pack目录下得到一个install.exe
双击该可执行程序,验证制作的安装程序是否正常。
以上示例使用的工程文件可从git上直接下载 :
https://github.com/zzu-andrew/QT_examples/tree/main/qt_install