2013-10-23 97 views
2

後我工作的安裝程序有安裝註冊表元素融入64位HKLM蜂巢組件,並安裝類似鑰匙進入32位蜂巢(下Wow6432Node)。上安裝日誌顯示64:Windows安裝程序日誌顯示註冊表項添加,但在註冊表中不存在安裝

MSI (s) (40:30) [13:29:49:879]: Executing op: RegOpenKey(Root=-2147483646,Key=SOFTWARE\Company\Product,,BinaryType=1,) 
MSI (s) (40:30) [13:29:49:879]: Executing op: RegAddValue(Name=MyValueName,Value=MyValue,) 
WriteRegistryValues: Key: \SOFTWARE\Company\Product, Name: MyValueName, Value: MyValue 

那麼32位以後..

MSI (s) (40:30) [13:29:49:910]: Executing op: RegOpenKey(Root=-2147483646,Key=SOFTWARE\Wow6432Node\Company\Product,,BinaryType=1,) 
MSI (s) (40:30) [13:29:49:910]: Executing op: RegAddValue(Name=MyValueName,Value=MyValue,) 
WriteRegistryValues: Key: \SOFTWARE\Wow6432Node\Company\Product, Name: MyValueName, Value: MyValue 

然而,當我在HKLM\Software\Wow6432Node\Company\Product去看看在註冊表中的值是不存在的。

回答

0

這是不可能與所提供的數據來回答。也許安裝程序中止並回滾。也許另一個組件複製了註冊表數據並在稍後進行了更改。也許一個自定義操作會觸發並重置該值。或者甚至是另一個MSI,它是引導程序的一部分。

我需要花時間在虛擬機上測試您的安裝知道到底發生了什麼。 WriteRegistryValues中沒有我知道的系統問題。

+0

對不起,我應該補充:安裝成功完成。沒有自定義操作觸及此值或運行和編輯該位置的其他MSI文件。 – NGaida

+0

唯一的其他信息是我將組件從一個32位組件(僅包含默認的SOFTWARE \ Company \ Product)更改爲一個64位組件,其中包含64位和32位路徑。從以前的版本升級到最新版本時會出現該問題。 – NGaida

+0

你正在做重大升級或小升級?如果主要,RemoveExistingProducts的計劃在哪裏? –

0

「......升級從以前的版本到最新一事時表示了」

由於這是我願意的情況下:

  • 斯普利特32個和64位部分,以使用兩個不同的組件。這是可能的。
  • 設置新的組件,這不是由 以前的設置安裝位置的關鍵路徑。換句話說:確保兩個組件都具有關鍵路徑並且它們是不同的。
  • 啓用「重新評估部件條件」兩種組分(傳遞部件)。這將在重新安裝期間重新評估安裝的組件狀況。換句話說,確定是否要在系統上安裝,重新安裝或刪除它們。

如果爲組件關鍵路徑以前安裝存在上重新安裝,將不會安裝,您已經有效地使64位添加了新的註冊表項,因爲部件僅僅或安裝作爲一個整體不所有。

相關問題