2012-07-30 51 views
3

我想發佈Setup.msi Setup.msi輸出的Setup.msi Setup.BootStrapper項目的Setup Project和setup.exe輸出。因爲我想發佈兩個(setup.msi & setup.exe)所以,安裝的順序是不可預知的。如果用戶首先安裝setup.exe,然後安裝setup.msi,則工作正常。它提供了「刪除」和「修復」選項。但如果先安裝msi然後使用exe,那麼它也會安裝setup.exe。所以,它顯示了ARP中的兩個設置。我怎樣才能解決這個問題?我可以發佈msi和exe嗎?

+1

「我想發佈setup.msi和setup.exe」 - 爲什麼? – 2012-07-30 10:37:06

+0

只需使用像Inno Setup這樣的工具即可。 Visual Studio中的Winows Installer功能正在被刪除。 – 2012-07-30 11:09:42

+4

@Ramhound - Windows Installer不是Visual Studio的一個功能,它是Windows Platform SDK的一部分。你在說的是Visual Studio部署項目。這是一個編寫Windows Installer數據庫的Visual Studio功能。他們正在被刪除,因爲他們在編寫適當的MSI數據庫方面做得如此糟糕。海報並沒有使用這個工具,這讓我感到震驚,你敢推薦一個工具,甚至沒有對這個空間有一個基本的瞭解。 – 2012-07-30 11:59:46

回答

1

在ARP中看到2個條目表示MSI和EXE具有不同的ProductCode值。您可能將Product @ Id屬性設置爲*。通常這是正確的,但在你的情況下它不是。 MSI和EXE可能也有不同的PackageCode值。 (包@ Id)的

兩個解決方案:

1)構建EXE,然後使用postbuild事件提取MSI

2)構建EXE和MSI兩次,但把GUID生成到您的構建自動化並將它作爲變量傳遞給WiX構建,以使它們都獲得相同的值。

+0

但Wix捆綁軟件不能擁有產品標籤。那麼,我如何提供產品ID? – AArora 2012-07-30 12:21:28

+0

這裏我使用Setup.Bootstrapper項目來刻錄setup.msi來獲取Setup.exe。 – AArora 2012-07-30 12:31:25

+0

我還沒玩過WiX的bootstrapper部分。不過,這些症狀告訴我,您正在使用不同的ProductCode屬性構建MSI。 – 2012-07-30 15:31:36

0

把這個語句放到你的MSI項目中,這將阻止MSI表單在ARP中創建ICON。

<Property Id="ARPSYSTEMCOMPONENT" Value="1" /> 
+1

我還沒有測試過,但這聽起來像是會破壞海報的最終用戶只安裝MSI版本的情況;在這個MSI專用的情況下,應該有一個ARP圖標。此外,也許這個答案可以防止任何圖標出現在ARP中,防止卸載產品? – 2012-11-03 09:20:02

相關問題