安装QtInstallerFramewor
Qt Installer Framework
下载地址:
http://download.qt.io/official_releases/qt-installer-framework/
下载最新的QtInstallerFramework-win-x86.exe
然后安装。 这里下载的是最新4.0.1
版本。默认是安装在C:\Qt\QtIFW-4.0.1
。
注意:安装路径不支持中文,本人亲测Qt
的其他安装程序也不支持中文路径。所以用这个制作出来的安装包也不支持中文路径。
制作安装包的基本步骤是:
- 用
QtCreator
在RELEASE
模式编译出程序 - 用
windeployqt
工具把程序打包,其实就是把一些Qt的库或者依赖项添加进行来。但是经过此操作并不是会把所有的依赖项都添加进来,保险起见执行完windeployqt
之后运行程序看看缺不缺依赖。如果缺少则根据提示把缺少的依赖项复制过来,此处推荐用everything
工具去查找缺少的依赖项,简直爽歪歪。 - 到
QtInstallerFramework
安装目录找到examples\startmenu
。 把它复制到你想存放制作安装包的地方。以startmenu
为模板制作安装包 - 进入
startmenu
目录,把第2步打好的包复制到packages\org.qtproject.ifw.example\data
下 - 根据自身情况修改
config\config.xml
,packages\org.qtproject.ifw.example\meta\package.xml
,packages\org.qtproject.ifw.example\meta\installscript.qs
- 在当前打开终端,输入:
C:\Qt\QtIFW-4.0.1\bin\binarycreator.exe -c config\config.xml -p packages install.exe -v
。 此处推荐Cmder
终端。 如果是用系统自带的命令行工具,则需要手动切换到第3步存放startmenu
目录的位置,然后执行打包命令。执行完成之后会生成install.exe
配置说明
config\config.xml
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>星空互联终端</Name>
<Version>1.0.0</Version>
<Title>星空互联终端安装向导</Title>
<Publisher>星空探索科技有限公司</Publisher>
<!-- Directory name is used in component.xml -->
<StartMenuDir>星空探索科技有限公司</StartMenuDir>
<TargetDir>@HomeDir@/gzjm_mti</TargetDir>
</Installer>
<Name> 软件名称
<Version> 版本号
<Title> 安装程序窗口标题
<Publisher> 发布者名称
<StartMenuDir> 要生成的windows开始菜单目录
<TargetDir> 默认安装路径, 注意不支持中文路径
packages\org.qtproject.ifw.example\meta\package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>星空互联终端</DisplayName>
<Description>星空互联终端操作软件</Description>
<Version>1.0.0-1</Version>
<ReleaseDate>2021-01-07</ReleaseDate>
<Default>true</Default>
<Script>installscript.qs</Script>
</Package>
<DisplayName> 显示的名称
<Description> 描述
<Version> 部件的版本号
<ReleaseDate> 发行日期
<Licenses> 许可信息名称以及许可文件名
<Default>默认是否选中协议
<Script> 脚本文件
<UserInterfaces> 额外的界面(如果需要的话,而且需要去installscript.qs中配置)
packages\org.qtproject.ifw.example\meta\installscript.qs
function Component()
{
// default constructor
}
Component.prototype.createOperations = function()
{
// call default implementation to actually install README.txt!
component.createOperations();
//指定在开始菜单要创建的快键方式,这里是为lb_mti.exe 创建名为 星空互联终端 的快键方式
if (systemInfo.productType === "windows") {
component.addOperation("CreateShortcut", "@TargetDir@/1b_mti.exe", "@StartMenuDir@/星空互联终端.lnk",
"workingDirectory=@TargetDir@", "iconPath=%SystemRoot%/system32/SHELL32.dll",
"iconId=2", "description= 打开 星空互联终端");
}
}
打包过程:
参考:
https://blog.csdn.net/mars_xiaolei/article/details/83825447