2010-06-18 59 views
0

我有一個由幾個服務和一個客戶端用戶界面組成的x86 Windows應用程序。在Win Svr上檢測已安裝的應用程序的問題Svr 2003 x64

由於說服各種MSI進行正確升級的各種問題,安裝過程現在由一個嚮導式程序進行管理,該程序檢測當前安裝的內容並通過存儲用戶的當前設置來處理升級,卸載現有軟件以及安裝新版本。

的基本過程是:

  • 查找範圍HKLM\Software\Classes\Installer\Products
  • 循環遍歷GUID鍵在其中尋找ProductName="(my app name)"
  • 如果沒有找到,請重複HKCU\Software\Microsoft\Installer\Products,而不是
  • 開始。如果發現,提供用戶升級(如前所述)或其他乾淨安裝(即用戶被嚮導詢問各種問題)

現在,在XP上,幾乎所有你不在乎的Windows平臺都能正常工作。它僅在Windows Server 2003 x64上失敗,因爲嚮導沒有檢測到現有安裝 - 儘管與我測試的任何其他平臺上的註冊表項完全相同。

這是罰款:

  • XP X32
  • Vista的32倍,64
  • Server 2003的86
  • Server 2008中的x86,x64的
  • Server 2008 R2的64位
  • 的Windows 7 86 ,x64

這只是Server 2003 x64,似乎表現出這個問題。

回答

0

好的。最後弄清楚了發生了什麼。

該向導編譯爲x86,我認爲註冊表虛擬化正在成爲現實。 x86嚮導在所有其他WinOS(32和64位)上都能正常工作,但在Server 2003x64上卻沒有。我猜想由WI創建的註冊條目對於x86進程是隱藏的。

重新編譯爲MSIL意味着它現在可以在任何地方工作,包括Server 2003x64。

相關問題