2014-04-30 103 views
5

我在理解InstallShield如何處理升級時遇到了一些麻煩。在升級過程中始終執行刪除/重新安裝

我想要的是能夠增加安裝程序的版本號,重新編譯並分發我的安裝程序。這應該會自動刪除以前的任何版本的應用程序,並安裝最新版本(並且應該以「升級」的形式呈現給用戶)。

這是一個非常簡單的安裝程序,它只需要從一些Visual Studio項目(應用程序EXE,某些DLL等等)輸出並將它們全部安裝到Program Files中。只有一個功能,它始終安裝。

我不想更改產品的升級代碼,因爲我必須爲每個以前的版本創建新的升級路徑(這是凌亂的)。

我已經嘗試過(增加版本號,但不更改產品代碼或升級代碼),但每次我運行安裝程序以「升級」產品時,都會顯示「恢復[ProductName]的嚮導「,有時一些文件不會被來自較新安裝程序的較新對應文件替換。

我不增加版本號的「修訂」號碼。我知道這被忽略了。通常,我會嘗試類似2.0.3 => 2.0.4

如何設置InstallShield,以便自動刪除以前的任何版本,安裝最新版本,並在已安裝先前版本的情況下將其作爲「升級」或「更新」呈現給用戶?如果沒有,它應該像正常一樣安裝(「安裝」,而不是「更新」)。

我使用InstallShield 2013專業版(20版SP1),我堅持到Visual Studio 2010中

+0

您正在使用哪種項目類型? Installscript MSI,Basic MSI,純Installscript? –

+0

我相信這是一個基本的MSI項目,但我不熟悉InstallShield,所以我不確定。它在項目文件夾中有一個'.isproj'文件和'.ism'文件。 – qJake

+0

我想你可以通過更新升級表來實現你想要的功能,除了你已經在做的事情之外。請仔細閱讀以下內容:http://apprepack.blogspot.no/2012/06/msi-upgrade-table.html。基本上更新VersionMax字段。這假定已經爲主要升級場景設置了設置。 –

回答

6

你需要什麼範圍內使用InstallShield編輯器是一個重大升級。這實際上是自動卸載現有版本並在您創作MSI升級表後自動卸載現有版本並重新安裝新版本,作爲Windows Installer Engine自身的一項操作,設置新的ProductVersion並更改軟件包和產品代碼。這是Windows安裝程序中最容易出錯的更新機制。要在Installshield中執行主要升級,請轉到升級視圖並添加升級項目。然後按照GUI嚮導或頁面設置升級選項。我會看看我現在能否爲你找到一個更好的鏈接,但是這會讓你走。

要真正理解Windows Installer升級,您應該閱讀this book chapter。或者這個微軟MSDN page

只是爲了完整:一個小升級 - 這是升級現有的安裝而不卸載它,通常更難以在一開始就得到正確。許多技術限制適用。以下是需要一個次要升級工作的一個很好的總結(以及其他細節):http://www.installsite.org/pages/en/msi/updates.htm

+0

儘管如此,我們推出頻繁版本的產品,併爲InstallShield項目中的每個產品創建升級路徑/升級項目非常麻煩。應用程序應該支持從任何以前的版本升級,所以這需要爲每個以前的版本存在一個項目。 – qJake

+0

更新:這實際上是正確的,我們正在更改升級代碼,而不是產品代碼(這些屬性的名稱令人困惑,而且看起來倒退!)。我們的主要升級版本現在可以使用以前的版本。 – qJake

0

在這種情況下,你可以使用COM自動化自動使用JavaScript或者VBScript的釋放過程。如果您在Word或Excel之前自動執行其他產品,這是一個熟悉的過程。這裏有一些資源得到持續:

我的生成過程中一旦使用這種VB腳本,也稱爲FinalBuilder一個構建工具,採取了發關心構建過程的其餘部分。我猜這個時候FinalBuilder可能會對Installshield有一個動作,所以你可以完全繞過這個腳本。我不確定。只想鏈接到GUI,以便看到該工具的外觀。 Further screenshots

+0

我們已經使用TFS進行構建自動化,它也具有InstallShield集成功能。我不是構建工程師,所以我很難理解這與構建自我更新安裝程序有什麼關係?我們通常使用Visual Studio手動構建我們的安裝程序(我們是一個小團隊)。 – qJake

+0

構建過程應該能夠吐出一個MSI,根據需要對所有先前版本進行重大升級 - 或者這不是一個完整的構建過程。我沒有使用過TFS,也無法描述事情是如何完成的。 –

+0

我想這就是我的問題 - 如何在沒有構建過程的情況下做到這一點?我如何創建一個安裝可執行文件,它將從任何以前的版本進行重大升級...但僅*使用InstallShield編輯器? – qJake

相關問題