2010-06-11 168 views
22

我有一個部署項目,它不會讓我安裝在舊版本上。 msi文件說,首先從「添加/刪除程序」中卸載該程序。這不是一個好的用戶體驗。我該怎麼做才能使安裝程序首先刪除軟件,然後安裝新版本?在舊版本上安裝新版本的部署項目

+1

這是什麼都與C#編程語言呢? – 2010-06-11 17:35:12

回答

26

這是棘手的,你必須做以下步驟,

  1. 集中刪除以前安裝的真
  2. 設定的檢測爲真新版本
  3. 你的C#程序的版本必須在每次部署增加
  4. 您應該將安裝程序的版本更改爲更高版本,並會要求您更改產品代碼,請選擇是。
  5. 不要更改升級代碼,讓它相同。

如果您沒有正確執行第三步,安裝程序仍然會安裝並保留舊文件,如果您更改了內容,則每個文件的文件版本必須是新的。

+0

我認爲'遠程以前的安裝'的意思是'RemovePreviousVersions' – CRice 2010-06-24 23:41:19

+0

關於如何在不改變ProductCode guid的情況下實現這一點的任何想法? (小的更新)http://stackoverflow.com/questions/3114637 – CRice 2010-06-24 23:49:40

+0

隨着「你的C#程序的版本必須隨着每次部署而增加」,你的意思是每個感動的程序集,不是嗎? – mbx 2012-09-10 14:32:06

5

設置安裝項目屬性RemovePreviousVersions

但你必須使用相同的的UpgradeCode在這兩個安裝應用程序

+0

+1感謝指出了相同的升級代碼。 – 2010-06-11 17:33:03

13

我嘗試了幾個場景,也許這將幫助別人節省一些時間

如果組件版本發生變化並且項目安裝程序版本發生更改(產品代碼Guid也發生變化) - >應用程序安裝在現有的頂部 - > dll和exe版本得到更新 - >如果安裝路徑不同,現有的最初安裝的項目文件將從安裝位置刪除。 (既然做文件保留)

如果集版本的變化和項目安裝程序版本的變化(不包括產品代碼的Guid改變) - >要求用戶手動刪除該應用程序 - 如果他們繼續前進,從控制面板中先刪除> ,應用程序就可以進行安裝和DLL和EXE文件可以更新到新版本

如果只有集版本的變化,或只項目安裝版本的變化(不包括產品代碼的Guid改變) - >要求用戶手動刪除該應用程序 - >如果他們繼續並先從控制面板中刪除,則可以安裝應用程序,並將dll和exes更新到新版本

如果僅有項目安裝程序版本發生更改(產品代碼Guid也在更改) - > MSI會經歷安裝過程,但dll和exe不會更改版本 - 它們是按照程序集版本進行的,並且被替換爲相同程序集的文件構建版本 - >如果安裝的IF路徑不同,則現有的最初安裝的項目文件將從安裝位置中刪除。 (因爲所做的任何文件保留)

如果項目安裝的版本變化(與產品代碼的Guid也在發生變化)和裝配的版本比安裝的版本 低 - >安裝將開始,在最終用戶被告知安裝失敗的舊版本。

+1

有幫助..投票。 – Munavvar 2017-02-07 10:54:20

0

安裝新版本後,有時可以這樣做舊產品將保持不變。

您需要更改RemoveExistingProducts的序列號,它必須安排在 安裝驗證操作和InstallInitialize之間。您可以通過ORCA

做到這一點對於防爆InstallValidate = 1400 InstallInitialize = 1500

然後RemoveExistingProducts = 1450