使用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进行程序打包
将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



















