我的應用程序使用「Any CPU
」配置構建。該應用程序的WIX安裝程序使用platform=x86
構建,因此生成的MSI爲32位。使用32位MSI在64位Windows上安裝「AnyCPU」程序有什麼危害?
當我在64位Windows上運行32位MSI時。 [ProgramFilesFolder]
屬性已解析爲「C:\ Program Files(x86)」,註冊表路徑解析爲Wow6432Node
。當我運行該應用程序時,該過程是64位 - 如預期的那樣。
據我瞭解,在閱讀了很多關於SO的相關帖子後。在64位Windows上,將[ProgramFilesFolder]
解析爲「C:\ Program Files」,並將註冊表路徑解析爲正常路徑(不在Wow6432Node
下)。我需要一個單獨的64位MSI。我試圖避免 - 對我來說,單獨使用一個單獨的64位MSI僅適用於[ProgramFilesFolder]
,並且註冊路徑以解決正確位置不值得。只要我的程序仍然在64位Windows上運行64位,我並不關心它在默認情況下安裝在「C:\ Program Files(x86)」中,並且某些註冊表值存在於Wow6432Node
。
所以,我的問題是,當我在64位Windows上使用默認的32位MSI安裝「AnyCPU」程序時,會出現其他的後果,installDir是「C:\ Program Files(x86 )「和一些註冊表值存儲在Wow6432Node
?
你是否正在注意存儲在Wow6432Node中的任何註冊表設置正在被您的程序讀取而不是原生位置(如果您正在讀取它們)? –
爲什麼不建立這兩個,並有32位版本檢測64位操作系統,然後執行Setup64.exe並退出如果是true? –
@Scott Chamberlin,我只在註冊表中安裝了一個值。在64位運行時強制從Wow6432Node讀取C#代碼比創建另一個安裝程序更容易。 – sean717