2008-09-02 150 views
9

我已經構建了一個我想要部署和經常更新的MSI。不幸的是,當您安裝MSI,然後嘗試安裝相同MSI的較新版本時,它會失敗,並顯示「此產品的另一版本已安裝,此版本的安裝無法繼續...」。 MSI是使用Visual Studio 2008安裝項目構建的。我試圖將「刪除以前的版本」屬性設置爲true和false,以使新版本覆蓋舊版本,但沒有任何成效。在以前的公司,我知道我沒有使用Wise和Advanced Installer構建的安裝程序的問題。有沒有我失蹤的設置?或者,我所需的功能不受VS 2008安裝項目支持?MSI安裝程序無法刪除以前的安裝失敗

回答

9

我已經用VS 2005 Pro構建了許多MSI,可以正確執行此操作。

您確定部署項目的'Version'屬性已增加嗎?此屬性與應用程序中的程序集版本無關,如果MSI的Version屬性與您嘗試覆蓋的版本屬性相同,則會顯示錯誤消息。

+1

如何獲取部署項目的'版本'屬性?具體步驟是什麼? – sagesky36 2013-01-21 15:29:40

5

增加項目的版本號。

在VS中,選擇安裝應用程序的節點,然後按F4查看屬性。找到版本字段,並增加它。

3

您需要更改每個版本之間的ProductCode,如果您不這樣做,您將看到您所看到的行爲。 ProductCode在項目屬性中可見。查看MSDN Online Help for ProductCode以更好地理解。

+1

只需更改主要升級的產品代碼,小的頻繁更新應該保留相同的產品代碼並只增加版本。 更改產品代碼實際上是Windows安裝程序眼中的新應用程序。 – saschabeaumont 2008-09-12 04:49:52

0

從XP到Win7時出現同樣的問題。要解決它,我必須將DetectNewerInstalledVersion設置爲False。另外,正如其他人所提到的,您需要包含安裝項目的版本。

祝你好運。

1

這是稍微複雜一些:

要自動刪除安裝項目安裝的應用程序的早期版本,它是需要:

  1. 增量的版本屬性(例如,從1.0.0到1.0.1 ...也在第三個位置工作)
    • 版本是安裝程序項目的屬性,它標識哪個版本的應用程序安裝ED
  2. 更改產品代碼屬性,因此安裝程序知道,這是不執行相同的安裝程序兩次
    • 產品代碼是安裝項目的屬性時,Visual Studio提供了自動更改它,當版本財產變更
  3. 保留「UpgradeCode」屬性的值。
    • 的UpgradeCode也安裝項目的屬性
    • 它需要保持完整的「升級行」中相同,所以安裝知道什麼升級
  4. 如果您也想刪除舊的應用程序版本從控制面板的軟件列表中設置RemovePreviousVersions爲true
+0

我除了以前的版本之外都做了所有不是由.msi卸載的。我有VB腳本來改變成功構建版本和產品代碼。並且RemovePrevious Version屬性也設置爲true。請幫助任何想法?如何克服。 – 2013-07-12 05:59:55