版本更新日志
Ver 17.0822
首次创建。
Ver 17.0824
1、增加FAQ:Debug模式下无法启动应用;
2、增加示例文件及相关文件的百度云盘链接路径。
1 背景介绍
无论是使用Qt静态链接,或者使用Enigma Virtual Box将exe及其依赖的库进行打包均存在如下问题:
- 发布程序非常大;
- 不具备灵活性(如果程序或Qt更新,需要重新部署过程);
- 不能部署插件(dll);
- 使用Enigma Virtual Box打包后程序启动速度较慢(本人测试启动时间约为静态链接方式的4倍)。
如果应用程序中具有多个exe,或者多个exe共同插件(Qt提供插件或自己写的插件),上述方式均不能任胜,即通过静态链接或打包的方式不适合开发大型的企业级应用。
如果使用Qt提供的部署工具windeployqt,则exe所依赖的Qt库位于相同的文件夹,给应用程序的版本管理带来极大的困难。
本文提供了一种方法,用以解决上述两个问题。将exe应用依赖的Qt库放于固定的文件夹,可将exe放于任意位置,实现应用启动。当开发模式成熟后,企业应用依赖的Qt库已基本上不会变动时,可将该依赖库打包成一个exe,在用户计算机上安装,如同在用户计算机上安装.NET Framework/.NET Core(安装.NET应用运行所需的托管运行库CLR Runtime)。
2 使用windoployqt打包exe依赖的库
启动“Qt 5.9.1 for Desktop (MinGW 5.3.0 32 bit)”,如下图所示。
按下面命令格式执行命令:
windeployqt --force --qmldir {path-to-qml} --dir {path-to-store-qt-libraries} {path-to-app-binary}
命令参数解释:
- –force:强制更新目标路径exe所依