2013-02-20 40 views
3

我是MSI的新手。我創建了一個Window's Service,它是我的MSI的輸出項目。我的本地機器是64位Win 7機器。我試圖安裝的服務器是在VM上運行的Win 2008 32位服務器。我正在使用.NET 4 VS2010。創建MSI但得到安裝包不支持此處理器類型的錯誤

當前,我的服務的exe正在構建爲發佈目標=配置管理器中的任何CPU。 MSI並沒有給我任何改變平臺的選擇。

我可以在我的本地64位Win7機器上安裝沒有問題。但是,每當我嘗試在32位Win 2008上安裝時,出現以下錯誤: 「此處理器類型錯誤不支持此安裝程序包。請與您的產品供應商聯繫。」

我試着將服務的目標更改爲x86重建exe和設置,但我得到了同樣的結果。該服務引用了一些類庫。我將這些從任何Cpu改爲x86,以查看這是否有所幫助。

我也確保將我的安裝項目和服務先決條件設置爲.NET Framework 4(x86和x64)。我還嘗試將先決條件Windows Installer從3.1更改爲4.5。

似乎沒有任何工作。有任何想法嗎?謝謝。

+0

如果有的話,這給了我們一個商業參數來將我們的測試服務器升級到64位。最近,生產已升級到64位,但測試不是。 – evodev 2013-02-22 21:11:42

回答

5

好的,我想出了TargetPlatform的位置。它與其他VS項目不同。

要訪問TargetPlatform,請選擇MSI項目並按F4鍵。中提琴!在「屬性」網格中,您將找到具有以下選項的TargetPlatform字段:x86,x64,Itanium。注:這是您在項目上右鍵單擊並從上下文菜單中選擇「屬性(Alt-Enter)」項目時獲得的完全不同的屬性集。 「Alt-Enter」屬性與「F4」屬性。

不幸的是,這與其他VS項目屬性不同。通常,項目屬性設置在主窗口中,而不是在「F4」屬性網格中。因此,當其他線程討論項目的屬性時,我不斷地感到困惑,因爲這是不同的。

如本one

ConfigurationManager中在VS不影響MSI。我將所有依賴程序集保留在「任何CPU」上。此外,不要忘記在「啓動條件」窗口中右擊正確的框架(右鍵單擊項目 - >查看 - > TargetConditions)。

希望這會有所幫助。

+0

你在哪裏按下這個F4鍵?它在Visual Studio 2010中對我沒有任何幫助。這是什麼捷徑?什麼菜單? – Kaz 2013-09-07 04:57:53

+0

在VS 2012中,它們與菜單選項相同: 查看>屬性窗口和視圖>屬性頁面。 – Malganis 2014-09-03 15:56:44

+0

注意:由於移至VS2013,我必須刪除此MSI。VS2013不再支持這個項目類型。 – evodev 2014-09-06 00:46:09

6

就我而言,在HKLM/SOFTWARE(64位)註冊表節點下指定的條目足以導致32位Win7主機上的安裝失敗。

使用免費的集成InstallShield產品,VS 2010/2013的症狀相同。我能夠保持正在安裝的項目的任何CPU設置。 MSI安裝項目沒有其他特殊設置需要。