4

当我的文件集包含对 C++ 运行时 DLL 具有一个或多个依赖项的 DLL 时,我需要从 VCRedist.exe 安装该文件。这可能很困难,因为每个 DLL 都依赖于特定版本的 C++ 运行时。

  • 如何自动将运行时可再发行组件添加到我的安装程序?

  • 如何在 WinSxS 中处理需要不同版本的 C++ 运行时的 DLL?

4

3 回答 3

1

您需要安装库所需的最新版本(最高)版本以及将旧版本重定向到新版本的策略文件。

您可以使用与 Visual Studio 一起安装的合并模块来执行这两种操作。它们通常位于C:\Program Files\Common Files\Merge Modules. 请参阅如何使用安装程序安装 Visual C++ 可再发行MergeRef组件的元素和示例。您还需要将策略合并模块添加到您的安装中。

于 2011-05-16T18:04:35.997 回答
0

您可以简单地确保安装了最新的 vcredist,它会自动包含对旧版本的支持。

我认为在安装程序运行之前使用引导程序安装运行时最简单。您可能需要创建自己的包,但很容易为此使用Bootstrapper Manifest Generator

在 product.xml 中,您可以添加安装检查以确保它没有安装两次,例如:

  <InstallChecks>
    <MsiProductCheck Property="VCRedistInstalled" Product="{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}"/>
  </InstallChecks>

有关其他 GUID,请参见此处

于 2011-05-16T16:36:06.413 回答
0

heat 和 Votive 都不支持请求的功能。必须手动添加运行时 DLL。

于 2011-05-30T11:00:58.760 回答