![](/img/trans.png)
[英]Add Visual C++ Redistributable for Visual Studio 2015 to InstallShield
[英]Can I bundle the Visual Studio 2015 C++ Redistributable DLL's with my application?
我使用 Microsoft Visual Studio 2015 社区版构建了一个 C++ 应用程序。 我正在使用 Advanced Installer 来确保Visual Studio 2015 的 Visual C++ Redistributable是先决条件。
但是,可再发行组件的安装程序并不完美。 我的一些用户报告说可再发行安装程序挂起,或者安装失败,然后用户收到“此程序无法启动,因为您的计算机缺少 MSVCP140.dll”错误。
根据微软的说法,我现在可以在我的应用程序中使用 package 可再发行 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 个文件。 这是否意味着我只需在安装过程中将它们复制到我的应用程序目录中?
这样做可以吗? 我需要出示执照吗? 为什么没有更多的人这样做,而不是要求再次预安装可再发行组件?
在
C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\redist\\x64\\Microsoft.VC140.CRT
有 4 个文件。 这是否意味着我只需要在安装过程中将它们复制到我的应用程序目录中?
是的,你引用的段落就是这个意思。
这样做可以吗? 我需要出示许可证吗? 为什么没有更多的人这样做,而不是要求再次预安装可再发行组件?
从技术上讲,这样做是可以的。 如果您想学究一下,您可以在readme
或help/about
包含一条注释,说明在VC++ 2015 redistributables provided in "local deployment" mode
是 Microsoft 在 Visual C++ 中的部署明确允许的(有更多链接到重新分发 Visual C++ 文件中的文件列表和许可证)。
至于为什么更多的人不这样做,我猜(在那些关心的人中):
MyApp.exe
这样的单模块应用程序,使用静态链接的所有内容构建它更容易,以消除外部依赖;"local deployment"
)将更新的责任转移到维护者身上,以便在关键/安全修复的情况下必须及时重新发布包 - 而不是"central deployment"
可能会通过 Windows 更新提供,可能带来的好处和坏处。如果先决条件安装程序有问题,您还可以选择将可再发行组件安装为合并模块。 正如同一篇 MSDN 文章所提到的:
另一种选择是使用可再发行合并模块(.msm 文件),它可以在 Program Files [(x86)]\\Common Files\\Merge Modules 中找到。
使用合并模块比手动添加文件要干净得多。 这些文件可能会被另一位不知道它们为什么在那里的同事意外删除,或者其中一个可能无法安装,等等......
Advanced Installer 的所有版本都支持包含合并模块,包括免费版。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.