当我的文件集包含一个或多个依赖于C++运行时DLL的DLL时,我需要从VCRedist.exe安装该文件。这可能很困难,因为每个 DLL 都依赖于特定版本的C++运行时。
-
如何将运行时可再发行组件自动添加到安装程序?
-
如何处理 WinSxS 中需要不同版本的C++运行时的 DLL?
您需要安装库所需的最新版本(最高)版本,以及将旧版本重定向到新版本的策略文件。
你可以使用随Visual Studio一起安装的合并模块来执行这两项操作。它们通常位于C:Program FilesCommon FilesMerge Modules
。请参阅MergeRef
元素和如何使用安装程序安装 Visual C++ 可再发行组件的示例。您还需要将策略合并模块添加到安装中。
您可以简单地确保安装了最新的vcredist,它会自动包含对旧版本的支持。
我认为最简单的方法是在安装程序运行之前使用引导程序安装运行时。您可能需要创建自己的包,但为此使用引导程序清单生成器很容易。
在产品中.xml您可以添加安装检查以确保它未安装两次,例如:
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}"/>
</InstallChecks>
有关其他 GUID,请参阅此处。
Heat 和 Votive 都不支持请求的功能。必须手动添加运行时 DLL。