QT Installer Framework 打包程序

文件准备

  1. 编译程序 Release 版本,拷贝生成的 exe 到某个目录下。

  2. 拷贝依赖库到上面的文件夹:

  • 根据自己实际使用的编译器,打开终端,执行 windeployqt D:\installer\test.exe

这里列举出了程序的依赖库,但是没有自动拷贝到 test.exe 的目录下,我们可以手动拷贝上面的依赖库,根据使用的编译器版本选择相应的库,我的是 D:\Qt\5.14.0\mingw73_32\bin

此时,可以尝试运行一下 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:\Qt\QtIFW-3.2.2\bin\binarycreator -c config\config.xml -p packages test.exe -v

最终生成安装包:

posted @ 2020-03-20 21:49  刘-皇叔  阅读(1186)  评论(0编辑  收藏  举报