關於Installshield 2010安裝包如何更新舊版本

yulongguiziyao發表於2014-05-04
製作更新包的主要屬性:
在給出升級包型別之前,首先說明幾個概念:
1 Package code:從字面上理解就是包的程式碼,在IS中每構建一個包的時候都會給其賦予一個package code,而且是唯一的。
2 ProductVersion:產品版本,當將開發過後的系統檔案打包為一個.exe檔案(或者CD—ROM格式包)後,就成為釋出產品並可以進行上線使用了。那麼product version就成了區分產品版本新舊的主要依據。
3 ProductCode:產品程式碼,當你建立一個IS的object,IS會為你的工程分配一個產品程式碼,幫助文件中說明:MSI認為具有不同ProductCode的兩個產品是不相干的。個人觀點是其實Windows是不推薦相同的產品軟體在系統上重複安裝的,這個屬性也是我們更新包查詢早期版本的一個重要的依據。
4 UpgradeCode:升級程式碼,從字面上看這個屬性好像和我們的升級包關係很密切,但是事實上我們在製作升級包的時候,一般是不會改動UpgradeCode這個屬性的。幫助文件上介紹說,MSI認為如果UpgradeCode相同,那麼就是同一系列的產品,即文件中提到的“family”。
升級包的主要型別
對於InstallSield2010版本來說,幫助文件中給出一下幾種升級包的型別:

Major Upgrade(主要升級):既然是主要升級,那麼就是說我們的更新級別很高,對產品功能上做了很大的改動,這種情況下我們只能用MajorUpgrade對產品進行升級。還有一種情況是,如果使用者群體的產品版本不統一,比如說有用1.1的,有用1.2的,還有用2.0的,使用者群體想用一個統一版本的更新包將不同的版本更新至最新,那麼我們也只能採取MajorUpgrade這種升級方式了。問題出現了,如果使用者的系統沒有安裝過早期的版本怎麼辦?MajorUpgrade升級包安裝時,如果發現目標系統上以安裝過早期版本,那麼將對早期的版本進行解除安裝之後再安裝升級包(或者覆蓋原版本然後刪除不必要的資料),也就是說MajorUpgrade是作為一個完整的安裝包來執行的。如果目標系統上不存在早期的版本,那麼MajorUpgrade作為一個首次安裝軟體正常執行安裝。

Minor Upgrade(次要升級):次要升級的級別要比主要升級低很多,比如說從1.1更新到1.2,但是我們要保證產品功能結構上不能用變動。如有變動,我們必須採用MajorUpgrade升級方式。次要升級也是作為一個完整的安裝包執行的,如果有早期的產品在目標系統上安裝過,那麼次要升級覆蓋式安裝。如果沒有早期版本,那麼安裝過程就如首次安裝。
對於Major來說相對來說我們就輕鬆很多了,因為我們在原來的包上可以隨便的改動,非常的隨意,想加什麼加什麼,想刪什麼刪什麼,這個是我用來發洩的。。。。。。。剛開始弄的時候給我鬱悶的蛋疼,大家理解下。
Small Upgrade(較小升級):與MinorUpgrade相差不多,級別看實際情況而定。


對於MajorUpgrade 顯然意見  我們要在Upgrade Windows Installer Setup中新建一個Major Upgrade。還是在原工程中進行,剛開始得時候我為這個更新包是新建一個工程還是在原有的工程上改動糾結了將近一週的時間,無數次的實驗,最後在原有之上改動中成功了。但是感覺Major Upgrade應該可以新建一個工程。大家有時間自己實驗一下。
UpgradeWindows installer Setup 上文提過下方區域選擇第一個。

上方的修改大家按圖上的做,ProductVersion區域大家可以自己選擇,第一個是更新任何早期的版本,第二個是更新版本的範圍,第三個是一個特定的更新版本號。
對於MajorUpgrade 我們要修改packagecode ProductVersion Product code 可以在general information中修改 也可以在上圖中的Advanced視窗中修改,但是最好兩個要保持一致。
修改內容方面大家就自行解決吧。
還要提一下,就是我們以前提到的幾種更新升級都是查詢早期版本路徑之後,直接覆蓋或者更新在原路徑之上,但是Major Upgrade不同,如果你指定使用者可以修改安裝路徑,那麼他就不一定安裝在哪裡,但是一定會解除安裝以前的版本。如果Major得路徑與早期版本的路徑不同,那麼Major指定的路徑下會安裝,而且以前的路徑也會解除安裝安裝。大家研究一下。

謝謝大家的閱讀,以後如果有更好的更新會盡快的與大家分享。

相關文章