2011-05-16 60 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。您還需要將策略合併模塊添加到您的安裝中。

相關問題