1

我正在使用VS2015爲我的服務構建安裝解決方案。 我希望程序以64位運行。 在解決方案配置屬性中,我將所有項目都配置爲Debug,Platform Any CPU,Deploy blank。當我選擇程序文件時,爲什麼我的服務安裝項目安裝到Program Files(x86)?

MSI安裝程序要求我選擇一個文件夾來安裝的,然後我選擇Program Files文件\我的公司名稱

然而,當我嘗試安裝在Windows 8.1 64位操作系統安裝程序會創建一個文件夾,Program Files文件(x86)\我的公司名稱

爲什麼?

回答

3

很可能是因爲您生成的MSI是32位MSI,它只能訪問32 bit folder paths。因此,操作系統自動執行重定向。

您可以使用Windows SDK中的免費工具Orca來檢查MSI軟件包的類型。摘要信息菜單中可找到MSI的軟件包類型信息。或者您也可以生成安裝的詳細日誌,很可能您會在其中找到關於路徑重定向的信息。爲詳細的日誌生成

命令行:

MSIEXEC.EXE/I <完全MSI路徑>/L * V <完整的日誌文件路徑,包括日誌文件名>

事實是對於MSI來說,「任何CPU」意味着你可以獲得32位MSI,它可以在32位和64位機器上運行。正如你可以想象的,64位MSI無法安裝在32位機器上。

Windows Installer不支持混合MSI包。還有其他安裝創作工具可以構建一個EXE引導程序,它捆綁兩個MSI,每個體系結構一個,並基於運行的操作系統啓動正確的一個。

Advanced Installer can build mixed packages,也在這個SO similar/related thread中提到。與任何開發工具一樣,還有其他選項,請參閱上面鏈接的SO線程。

0

不同的包裝要求每個建築:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

在Visual Studio安裝項目的架構是在屬性窗口(請在解決方案資源管理器和F4,而不是「屬性」設置項目)在TargetPlatform選擇。安裝項目不會遵循您在代碼構建中可能做出的任何架構選擇。

使用ProgramFiles64Folder作爲ApplicationFolder屬性(如希思的文章所述)安裝到本機Program Files文件夾。

相關問題