Windeployqt 部署除 exe 文件外的所有内容
Posted
技术标签:
【中文标题】Windeployqt 部署除 exe 文件外的所有内容【英文标题】:Windeployqt deploys everything but exe file 【发布时间】:2018-05-15 18:52:59 【问题描述】:我正在尝试使用
部署 QML 应用程序C:\Qt59\5.10.1\msvc2015_64\bin\windeployqt.exe --dir e:\deptest --qmldir e:\ais e:\build-ais-Desktop_Qt_5_10_1_MSVC2015_64bit2-Release\release\ais.exe
这会将所有需要的文件复制到 e:\deptest,但是我调用 windeployqt 的 exe 文件没有被复制。如果我手动将它复制到目标文件夹,我可以运行它就好了。
Windeployqt 没有错误地完成,但是我不太确定这是否是预期的行为,或者这里是否做错了什么。
我必须自己复制 exe,还是我遗漏了什么?
【问题讨论】:
【参考方案1】:来自tool's documentation:
该工具可以在 QTDIR/bin/windeployqt 中找到。它以 .exe 文件或包含 .exe 文件的目录作为参数,并扫描可执行文件的依赖项。如果使用 --qmldir 参数传递目录,windeployqt 使用 qmlimportscanner 工具扫描目录中的 QML 文件以查找 QML 导入依赖项。 然后将识别的依赖项复制到可执行文件的目录中。 Qt5Core.dll 中的硬编码本地路径进一步替换为相对路径。
正常的操作模式是将*.exe
复制到部署目录并将windeployqt
指向可执行文件。然后它将所有依赖项复制到此部署文件夹。
使用--dir
选项 - 据我所知 - 不是“通常”的运行方式。我想如果你打算设置例如它是相当有用的。一个安装程序,其中 Qt 文件和您的应用程序是几个“组件”并且可以单独更新(这将节省带宽,因为您的应用程序会比 Qt 库更频繁地更新)。使用--dir
选项,您可以将所有必需的 Qt 依赖项放在一个可以单独打包的专用目录中。
【讨论】:
谢谢,我错过了突出显示的部分,是的,我正在使用另一个目录作为安装程序框架的输入。以上是关于Windeployqt 部署除 exe 文件外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
Qt打包部署程序自动查找依赖DLL工具windeployqt