Qt 最小部署

Posted

技术标签:

【中文标题】Qt 最小部署【英文标题】:Qt minimal deployment 【发布时间】:2016-09-21 08:26:46 【问题描述】:

我正在寻找一个 Qt Windows 应用程序,该应用程序对部署所需的 Qt 库和文件(例如 Qt5Core.dll 等)进行硬编码。

现在我知道有windeployqt 工具可以找到所有需要的文件。但是,它生成的文件比当前包含的文件多得多。没有很多应用程序似乎运行良好。我有点不确定 windeployqt 如何确定需要什么。一个合适的应用程序真的需要所有这些文件吗 - 或者 windeployqt 复制的文件比严格需要的文件多?换句话说,跳过它建议的一些文件是否有风险?

【问题讨论】:

您可能需要详细说明您正在谈论的确切文件。例如,如果您确定不使用该图像格式,则省略某些特定图像格式插件可能是安全的。部署工具无法知道这一点。 我现在并没有真正考虑任何特定文件,更一般地说,我如何能够确切地知道 windeployqt 复制哪些文件真正需要。如果缺少一个文件当然可以很容易地检查应用程序是否启动 - 我更担心会遗漏一些可能在应用程序的罕见用例中导致运行时问题的文件。 制作静态 Qt 构建,让您的生活更轻松。最终结果是没有外部依赖的单个可执行文件。从 Qt 5.7 开始,它也可以用于 QML 项目。对于 core + gui/widgets + network,可执行文件大约 8 MB。 【参考方案1】:

您根本不需要使用windeployqt。为了在开发期间使用,您应该添加必要的可部署文件作为目标,并将这些目标添加到INSTALLS。然后你做[n]make install,一切都部署好了。您可以将此目标添加到 Qt Creator 的项目配置中,以便轻松生成它。

当然,这仍然是一个拐杖,因为对于 Windows,无论如何您实际上都需要一个安装程序:安装程序编译器的工作是收集所有必要的文件。

【讨论】:

是的,我有安装程序。所以我正在考虑继续使用硬编码文件列表 - 但从 windeployqt 输出目录中检索它们,而不是在 Qt 安装目录中四处寻找它们最初的放置位置。 从 Qt 目录中获取它们要容易得多。他们的位置都是标准的。

以上是关于Qt 最小部署的主要内容,如果未能解决你的问题,请参考以下文章

QT 如何最小化窗体

QT界面如何加最小化、最大化按钮?

最小化 Qt 应用程序

QT中怎样实现窗口的最大化和最小化:

Qt禁止最大和最小化

Qt 单击任务栏图标实现最小化