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

如何为windeployqt设置qml输出目录

QT程序发布windeployqt.exe

“警告:找不到 GCC 安装目录。g++.exe 必须在路径中。”使用windeployqt时

Linux 发行版上的 windeployqt.exe

Qt windeployqt 导致部署不可用