2010-08-17 205 views
0

正在寫入的註冊表值在安裝時在x64我需要寫兩個註冊表值:64維克斯安裝程序不Wow6432Node

1)<RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\Exchange" Name="Info" Type="string" Action="write" Value="8">

2)<RegistryValue Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\Exchange" Name="Info" Type="string" Action="write" Value="9"/>

我使用<?if $(var.PlatformName) = x64 ?>來檢查我是否在x64上。

贏得7 64位它工作正常,但在XP 64位它將第二個鍵(「9」)的值寫入第一個鍵的位置(我猜它覆蓋了第一個鍵)。 任何想法爲什麼?或者我應該如何解決它?

回答

2

在.msi中執行此操作的正確方法是將這些註冊表值分爲兩個單獨的組件。兩者都會引用密鑰SOFTWARE\Microsoft\Exchange,但其中一個將是32位組件,另一個將是64位組件。請注意,包含64位組件的軟件包必須具有64位模板摘要值,因此無法安裝在32位計算機上。

0

我覺得首先你要明白,窗戶上SOFTWARE\Wow6432Node由於註冊表反射寫入註冊表值(這當32位安裝程序試圖註冊表值寫入SOFTWARE\或支持註冊表反射任意鍵發生)。

當您在其父代Component上將win64屬性設置爲true時,可以禁用Registry element的註冊表反射。

但是,作爲最佳實踐,建議爲x64環境創建一個MSI,爲x86環境創建一個MSI。

如果您想了解有關注冊表反射的更多信息,可以查看下一個鏈接。