因为公司一直用 QIFW 做客户端软件的在线更新
当更新完软件后,maintenancetool.exe 最后一个页面的默认按钮是 重新启动
这个 重新启动 启动的是 maintenancetool.exe,而不是重启客户端软件
现在,让我们通过修改 IFW 的源码,改变重启按钮的逻辑吧
如果你懒的编译,也可以用我编译好的
https://thinkinginqt.com/20251127_installer-framework/bin.zip
首先是下载源码,通过 git clone,拉取 4.10 分支的代码
https://code.qt.io/installer-framework/installer-framework.git
然后这个项目需要 静态编译 的 Qt 库
感谢 https://github.com/Fsu0413 编译了 VS2022 静态库
下载 https://sourceforge.net/projects/fsu0413-qtbuilds/files/Qt6.5/Windows-x86_64/MSVC 目录的
Qt6.5.3-Windows-x86_64-VS2022-17.10.0-staticFull-20240527.7z
解压后,在 QtCreator 里引入 qmake.exe
接着通过 vcpkg 安装静态编译的 bz2、lzma、zlib(我在D盘根目录安装了 vcpkg 即 D:/vcpkg/vcpkg.exe)
xxxxxxxxxx1.\vcpkg.exe install zlib:x64-windows-static2.\vcpkg.exe install liblzma:x64-windows-static3.\vcpkg.exe install bzip2:x64-windows-static修改 git/installer-framework/src/libs/installer/packagemanagergui.cpp 的 RestartPage::entering 函数
x
1void RestartPage::entering()2{3 QProcess::startDetached(QCoreApplication::applicationDirPath() + QStringLiteral("/tt_client_test.exe"));4 gui()->accept();5}在 git/installer-framework/src/libs/3rdparty/libarchive/libarchive.pro 的最后加入以下代码
31INCLUDEPATH += D:/vcpkg/installed/x64-windows-static/include2INCLUDEPATH += D:/vcpkg/downloads/tools/perl/5.40.0.1/c/include3LIBS += D:/vcpkg/installed/x64-windows-static/lib在 git/installer-framework/installerfw.pro 的最后加入以下代码
xxxxxxxxxx1INCLUDEPATH += D:/vcpkg/installed/x64-windows-static/include2LIBS += D:/vcpkg/installed/x64-windows-static/lib最后取消 shadow build 的 √ 用 release 模式编译源码

把 git\installer-framework\bin 编译出的 5个 exe 放入 C:\Qt\Tools\QtInstallerFramework\4.9\bin
于是我们就可以重新生成在线安装包了
xxxxxxxxxx11C:\Qt\Tools\QtInstallerFramework\4.9\bin\binarycreator.exe --online-only -c config\config.xml -p packages myApp_installer.exe