发布应用程序
- 在工程文件下新建一个文件夹,将项目以Release模式构建后生成的可执行文件.exe复制到该文件夹里
- 在该文件夹的地址栏里输入cmd,进入命令提示符窗口,然后输入
C:\Qt\6.2.3\mingw_64\bin\windeployqt --release --no-quick-import --no-translations --no-virtualkeyboard --no-complier-runtime Inference.exe
此处找到自己Qt的安装位置,然后选择对应的开发套件 Inference.exe是上面可执行文件的名称
-
将C:\Qt\6.2.3\mingw_64\bin\目录下的libgcc_s_seh-1.dll、libstdc++-6.dll和libwinpthread-1.dll这三个文件复制到该文件夹中,此时点击可执行文件就可以运行了
-
最终文件如下:
安装Qt Installer Framework
Qt Installer Framework是Qt自带的一个组件,在C:Qt\Tool中看是否已经存在,不存在的话找到C:\Qt\MaintenanceTool.exe,双击运行添加该组件。
然后把C:\Qt\Tools\QtInstallerFramework\4.2\bin\binarycreator.exe加到系统PATH环境变量中。
制作安装文件
- 在workspace下新建一个Installer文件夹,里面包含一个config文件夹和一个packages文件夹,然后新建一个.txt文件,按照需要编写内容,完成后将文件后缀改为.pro,大概内容如下:
文件夹格式如下:TEMPLATE = aux #项目模板类型 INSTALLER = InferenceInstaller #生成安装文件的名称 INPUT = $$PWD/config/config.xml $$PWD/packages demo.input = INPUT demo.output = $$INSTALLER demo.commands = binarycreator -c $$PWD/config/config.xml -p $$PWD/packages ${QMAKE_FILE_OUT} demo.CONFIG += target_predeps no_link combine QMAKE_EXTRA_COMPILERS += demo
- 在config新建一个config.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <Installer> <Name>Inference</Name> <Version>1.0.0</Version> <Title>Inference Created by Qt 6</Title> <Publisher>Cuit</Publisher> <StartMenuDir>Inference</StartMenuDir> <TargetDir>@HomeDir@/InferenceInstall</TargetDir> </Installer>
其中,name是应用程序的名称,Title是安装向导的标题,StartMenuDir是在开始菜单中创建的文件夹名称,Target是默认的安装文件夹。等等
- packages下存放组件,我做的项目里面只有一个组件,就全部打包在一起了,每个组件下需要一个data文件夹和一个meta文件夹,
- 把开始制作好的应用程序压缩为.7z文件放到data文件夹下
- meta中新建一个package.xml文件,内容如下:
<?xml version="1.0"?> <Package> <DisplayName>Inference</DisplayName> <Description>Inference应用程序</Description> <Version>1.0.0-1</Version> <ReleaseDate>2024-06-20</ReleaseDate> <Licenses> <License name="GNU public License Agreement" file="license.txt" /> </Licenses> <Default>true</Default> <Script>installscript.qs</Script> <ForcedInstallation>true</ForcedInstallation> </Package>
其中display是组件的名称,licenses是许可协议,script中是安装时执行的脚本如下:
function Component() { } Component.prototype.createOperations = function() { component.createOperations(); if (systemInfo.productType === "windows") { component.addOperation("CreateShortcut", "@TargetDir@/Inference.exe", "@StartMenuDir@/Inference.lnk"); component.addOperation("CreateShortcut", "@TargetDir@\\Inference.exe", "@HomeDir@/desktop/Inference.lnk"); } }
上述xml文件中的字段均可在官方文档中找到相应的含义,见:Qt Installer Framework Manual
-
最后在workspaces中的命令行窗口执行
C:\...\Desktop\startmenu>binarycreator.exe -c config/config.xml -p packages Inference.exe -v
开始的点换成你自己的桌面位置,最后换成你自己的exe的名称。