2011-06-22 31 views
11

使用Visual Studio 2010,我想切換到使用InstallShield LE而不是Visual Studio安裝項目。配置InstallShield LE以刪除使用Visual Studio安裝項目構建的以前的版本

在安裝項目中,存在一個選項RemovePreviousVersions,該選項非常適合製作安裝程序,該安裝程序在發佈新版本時基本上可以進行就地升級。

現在使用InstallShield LE,我已經更新了版本並生成了一個新的ProductCode,但是在運行安裝程序之後,以前的版本仍然存在。

我需要做什麼以便InstallShield構建的項目可以刪除使用VS Setup Project構建的以前的版本?

回答

8

你可以試試這個:

  • Orca打開舊的MSI,並在您的InstallShield LE項目從屬性表得到其的UpgradeCode
  • 進入「常規信息」解決方案資源管理
  • 確保「升級代碼」字段設置爲您的舊MSI升級代碼

您還應該確保ALLUSERS屬性對於兩個vers都具有相同的值離子(這是相同的方法)。您可以在這裏閱讀更多關於升級的信息:http://msdn.microsoft.com/en-us/library/aa369786(VS.85).aspx

+0

這與VS安裝項目的屬性中顯示的UpgradeCode相同嗎? – JYelton

+0

爲了記錄,它*與VS Setup Project屬性中顯示的UpgradeCode相同。 Orca是一個很大的安裝難題,因爲我不得不下載一個1GB的SDK,只需從它上面安裝Orca安裝。但是,它確實揭示了舊安裝使用了2的ALLUSERS設置,而新安裝使用了1.(1是每臺計算機,2是每個用戶或每臺計算機,每個用戶沒有值。 ) – JYelton

+1

不幸的是,這仍然無法正常工作。安裝版本A(VS Setup)然後安裝版本B(InstallShield LE)仍然會導致同時安裝兩個版本。 – JYelton

40

當我第一次開始使用Visual 2012中的項目時,這讓我瘋狂。我一直在添加/刪除程序中獲取重複副本,而舊版本未更新。這是我發現我需要做的。

在升級路徑下,創建一個新路徑。將最小版本留空(除非您需要),包括最小版本是,最大版本應設置爲您現在正在安裝的版本。將最大版本包含到是。

每次安裝更新時,請在「常規信息」部分中推進產品版本。 單擊一般信息部分中的新產品代碼 請勿更改升級代碼

返回到升級路徑,並將Max版本設置爲您現在部署的相同版本。這是讓我爲自己工作的關鍵。

此過程卸載以前的版本,並安裝最新版本。在添加/刪除程序中沒有重複項。

希望這會有所幫助。

+1

這是爲我做的,謝謝! – 2pietjuh2

+0

好的指示! – Matthieu

+0

是否可以爲用戶提供一個選項來完成升級或完全重新安裝整個應用程序(從而刪除所有數據庫和設置文件)。我正在使用Install Shield LE免費版 – androider

3

user2321103的回答非常好,在升級路徑中創建新的升級條目是關鍵所在。不幸的是,這個選項被隱藏起來,因爲它是爲了產生大多數人自然希望成爲安裝程序的正常默認行爲所必需的。

這個新答案的原因是我發現我可以將升級條目中的最大版本設置爲更高的數字而不是當前版本。這意味着我不必爲每個新版本都更新它。我目前的版本是2.1.8,所以我將Max Version設置爲2.1.9999。在未來的版本中,如果我想要不同的行爲,那麼我可以將我的版本升級到2.2。x

每當您更改版本號時,Microsoft安裝項目都會自動更新產品代碼,但Installshield LE不會,因此每次都需要記住這一點。

由於其他答案的狀態,升級條目使用先前安裝版本的升級代碼很重要。我還沒有嘗試過,但假設由於某種原因,你有不止一個以前的版本和不同的升級代碼,那麼你可以爲每個升級代碼創建一個單獨的升級條目。

我不明白你爲什麼不能將包含最小版本和包括最大版本都設置爲否,但這似乎不起作用。我還沒有嘗試過每一種組合這些不同的參數,但在對方的回答中指出如下設置似乎做的伎倆:

  • 閔版本:空白
  • 包括最低版本:是
  • 最高版本: > =當前版本
  • 包括最高版本:是

這也似乎是重要的是不要改變郎搜索標準來排除。 我也設置忽略刪除失敗爲是。 我已將遷移功能狀態設置爲「否」,但我認爲這與LE版本無關。

相關問題