我可以将 Visual Studio 2015 C Redistributable DLL 与我的应用程序捆绑在一起吗?

新手上路,请多包涵

我使用 Microsoft Visual Studio 2015 社区版构建了一个 C++ 应用程序。我正在使用 Advanced Installer 来确保 Visual C++ Redistributable for Visual Studio 2015 是先决条件。

但是,可再发行组件的安装程序并不完美。我的一些用户报告说,可再发行安装程序挂起,或者安装失败,然后用户收到“此程序无法启动,因为您的计算机中缺少 MSVCP140.dll”错误。

根据微软的说法, 我现在可以将可再发行的 DLL 与我的应用程序一起打包,尽管他们不推荐这样做:

若要部署可再发行的 Visual C++ 文件,可以使用 Visual Studio 中包含的 Visual C++ 可再发行包(VCRedist_x86.exe、VCRedist_x64.exe 或 VCRedist_arm.exe)。 … 也可以直接在应用程序本地文件夹中安装可再发行的 Visual C++ DLL,该文件夹是包含可执行应用程序文件的文件夹。出于维修原因,我们不建议您使用此安装位置。

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64\Microsoft.VC140.CRT 中有 4 个文件。这是否意味着我只需在安装过程中将它们复制到我的应用程序目录中?

  • 我的应用程序
  • concrt140.dll
  • msvcp140.dll
  • vccorlib140.dll
  • vcruntime140.dll

这样做可以吗?我需要出示执照吗?为什么没有更多的人这样做,而不是要求再次预安装可再发行组件?

原文由 a paid nerd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 555
1 个回答

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64\Microsoft.VC140.CRT 中有 4 个文件。这是否意味着我只需在安装过程中将它们复制到我的应用程序目录中?

是的,你引用的段落就是这个意思。

这样做可以吗?我需要出示执照吗?为什么没有更多的人这样做,而不是要求再次预安装可再发行组件?

从技术上讲,这样做是可以的。如果你想学究一下,你可以在 readmehelp/about 中包含一个注释,大意是 VC++ 2015 redistributables provided in "local deployment" mode 明确允许微软的 部署C++ (在 Redistributing Visual C++ Files 有更多指向文件列表和许可证的链接)。

至于为什么更多的人不这样做,我猜(在那些完全关心的人中):

  • 对于像 MyApp.exe 之类的单个模块应用程序,使用静态链接的所有内容构建它更容易,以消除外部依赖关系;
  • 包括这些文件会从分发(可能是下载)大小中节省 1+ MB;
  • 使用运行时的私有副本( "local deployment" )运行将更新的责任转移给维护者,因此在关键/安全修复的情况下,必须及时重新发布包 - 而不是 "central deployment" 它可能会通过 Windows 更新交付,可能带来好的 坏的。

原文由 dxiv 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题