2011-10-21 82 views
8

我有一個安裝Windows服務的MSI安裝程序項目。.NET MSI安裝項目 - 覆蓋以前的版本

我的版本編號方法是最好的這個帖子描述:What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion?

我不會改變我的安裝項目的版本爲沒有改變,我也這樣做,當有太多的問題。

我已經安裝我用下面的程序集版本的服務

[assembly: AssemblyVersion("4.3")] 
[assembly: AssemblyFileVersion("4.3.0.0")] 

我剛剛建立了一個MSI安裝程序到這個版本:

[assembly: AssemblyVersion("4.3")] 
[assembly: AssemblyFileVersion("4.3.1.0")] 

當我運行MSI它告訴我,我需要卸載以前的版本。

我該如何解決這個問題?我最終想要做的是:

  1. 安裝的MSI
  2. 安裝(RE:升級),另一個是覆蓋前一版本(提示或者沒有提示)版本 一個。我不想在安裝更新之前解除安裝。

我安裝項目屬性:

RemovePreviousVersions - 真

InstallAllUsers - 真

DetectNewerInstalledVersion - 假

版本 - 4.3.0

我試過的東西:

  • 更新項目的Assembly版本。但是,這會在「添加刪除程序」中創建相同產品的多個版本。不想要我想要的Windows服務
  • 更改安裝程序項目的版本號。但是,當試圖安裝任何版本的MSI時,這會產生很多錯誤。我甚至有警告說我正在網絡驅動器上安裝! (哇)。

任何幫助將搖滾!

謝謝。

+0

我總是要在安裝程序項目版本中進行更改,同時保留升級代碼,並且不得不手動卸載。這是迄今爲止我所見過的最好的 - 從與您相似的一系列要求開始。 –

回答

5

在安裝程序的安裝項目屬性中,您需要增加每個版本的「版本」屬性,同時保持相同的UpgradeCode。

當您增加版本時,它會提示您是否要更改ProductCode,回答「是」。

您還必須具有刪除以前版本和檢測新版本設置爲true的屬性。

+0

感謝的人 - 這似乎工作。 –

+0

要求更改ProductCode時,保持相同的升級代碼與「Yes」選項相反。這是矛盾嗎? – sweetfa