2011-05-16 74 views
4

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

  • 如何将运行时可重新分配自动添加到我的安装程序?

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

回答

0

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

0

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

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

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

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

其他的GUID见here

+0

有没有'热'或Votive支持检测到这一点?我应该在检测后管理.wxs文件,但最好创建一个片段将不胜感激。 – harper 2011-05-17 08:38:09

+0

引导程序不是wix的一部分,因此您无法使用此功能。请参阅例如'C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages \ *'或'C:\ Program Files(x86)\ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages \ *'为现有文件。使用BMG创建这样的文件。 – wimh 2011-05-17 09:57:21

+0

我不需要一个引导程序。在WiX.CHM部分的“如何:使用安装程序安装Visual C++可再发行组件”中,您可以找到如何包含合并模块。这是WiX的一部分,我寻求一种方法来让这个更方便,更不容易出错。 – harper 2011-05-17 14:03:05

1

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

您可以使用Visual Studio安装的合并模块执行这两个操作。他们通常位于C:\Program Files\Common Files\Merge Modules。请参阅MergeRef元素和示例how to install Visual C++ redistributable with your installer。您还需要将策略合并模块添加到您的安装中。

相关问题