文件准备
-
编译程序 Release 版本,拷贝生成的 exe 到某个目录下。
-
拷贝依赖库到上面的文件夹:
- 根据自己实际使用的编译器,打开终端,执行
windeployqt D:installer est.exe
这里列举出了程序的依赖库,但是没有自动拷贝到 test.exe 的目录下,我们可以手动拷贝上面的依赖库,根据使用的编译器版本选择相应的库,我的是 D:Qt5.14.0mingw73_32in
。
此时,可以尝试运行一下 exe 看是否缺少依赖库或插件,我的运行之后发现:
解决办法是将对应使用的编译器版本的libstdc++-6.dll
也拷贝到上面的文件夹。
上面的程序如果双击可以直接运行则证明库和插件已满足,但是由于电脑配置不同,可以借助另一台电脑测试一下,或者使用 Dependency 查看程序的依赖库:
如果不需要增加其他的附件文件,这样就可以了,如果需要增加用户手册、配置文件、License 这样的文件,可以添加到此文件目录下。
程序打包
下载 Qt Installer Framework 安装。
直接从安装路径下拷贝一个example,例如拷贝一个 startmenu 的例子,重命名为 test_Installer:
把前面打包过的文件全部复制到 packages下面的 data 文件夹里,注意是和 exe 同一级目录的所有文件。
其中的文件组织形式:
修改配置文件,在config
目录下,有一个config.xml
文件,使用文本编辑器打开,根据自己的需求进行修改:
< Name> 软件名称
< Version> 版本号
< Title> 安装程序窗口标题
< Publisher> 发布者名称
< StartMenuDir> 要生成的windows开始菜单目录
< TargetDir> 默认安装路径
修改包信息文件,在packages
目录下,有一个package.xml文件,使用文本编辑器打开,根据自己的需求进行修改:
< DisplayName> 显示的名称
< Description> 描述
< Version> 部件的版本号
< ReleaseDate> 发行日期
< Licenses> 许可信息名称以及许可文件名
<Default>默认是否选中协议
< Script> 脚本文件
< UserInterfaces> 额外的界面(如果需要的话,而且需要去installscript.qs中配置)
修改 installscript.qs 文件,增加启动栏、桌面快捷方式:
function Component()
{
// default constructor
}
Component.prototype.createOperations = function()
{
// call default implementation to actually install README.txt!
component.createOperations();
if (systemInfo.productType === "windows") {
component.addOperation("CreateShortcut", "@TargetDir@/test.exe", "@StartMenuDir@/MegPadUi.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/test.exe", "@HomeDir@/Desktop/test.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/maintenancetool.exe", "@StartMenuDir@/Remove.lnk");
}
}
CMD 执行:
C:QtQtIFW-3.2.2ininarycreator -c configconfig.xml -p packages test.exe -v
最终生成安装包: