2011-11-23 94 views
2

我對我在爲Windows XP 64位平臺製作MSI安裝程序時遇到的最新問題無能爲力。問題與Windows XP上的MSI安裝程序

在安裝程序的啓動條件中,我試圖從註冊表中讀取,但安裝程序沒有獲取正確的值。我試着檢查一個不同的Value名稱,以確認它不只是一個特定的Value名稱,並且發現它的行爲方式相同。

我試圖在錯誤消息中打印獲取的註冊表值數據,並意識到在某些情況下,它根本沒有任何值,並且在其他情況下,它無法獲取任何屬於完整值數據的數字。

例如,如果嘗試讀取數據:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
  • 值名稱:InstallRoot
  • 值數據:C:\Windows\Microsoft.NET\Framework64\

的數據表明,安裝程序獲取的是:C:\Windows\Microsoft.NET\Framework\。而在其他一些情況下,它會得到一個空字符串。

回答

2

默認情況下,註冊表搜索使用32位註冊表配置單元,只有在設置了msidbLocatorType64bit flag的情況下,纔會使用64位配置單元。

所以解決方案是使用2個搜索具有相同屬性:

  • 一個用於32位蜂房
  • 一個用於64位配置單元(帶msidbLocatorType64bit標誌)

請注意,Visual Studio安裝項目不支持這一點。其他設置創作工具可以。

+0

是的....它的作品! :)...不能感謝你足夠.. !!!你真的讓我擺脫了一個緊張的局面......我可能從來沒有在適當的時候自己得到解決方案。我使用Orca來進行建議的更改 –