InstallSield更新包快速入门文档----感谢原作者ㄣ齊¨彡仯乄的无私提供
本文經原作者ㄣ齊¨彡仯乄特許授權于海洋女神發布,轉載請務必注明出處與鏈接;原作者ㄣ齊¨彡仯乄和海洋女神保留對該文的一切法律許可下的權益;需要發布在盈利性報刊、網站等請與原作者ㄣ齊¨彡仯乄或海洋女神聯系.
簡述
本文主要描述安裝程序更新包的創建
制作更新包的主要屬性
在給出升級包類型之前,首先說明幾個概念:
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升級方式。次要升級也是作為一個完整的安裝包運行的,如果有早期的產品在目標系統上安裝過,那么次要升級覆蓋式安裝。如果沒有早期版本,那么安裝過程就如首次安裝。
Small Upgrade(較小升級):與MinorUpgrade相差不多,級別看實際情況而定。
下面給出常見的幾種情況升級級別的選擇:
| 更新需求 | Major Upgrade | Minor Upgrade | Small Upgrade | 提示 |
| 修改MSI包的名稱 | 可以使用 | ? | ? | 是否修改了ProductName |
| 用戶可以更新早期版本也可以替換最新版本 | 可以使用 | ? | ? | ? |
| 添加一個新的子Feature | 可以使用 | 某些情況 | 某些情況 | 如果添加的子Feature中包含的是新的components,三種升級都可以使用,如果包含了已經存在的components,只能使用Major Upgrade |
| 移動或者刪除了一個Feature | 可以使用 | ? | ? | ? |
| 在一個新的Feature中添加了新的components | 可以使用 | 可以使用 | 可以使用 | ? |
| 在一個已經存在的Feature中添加新的components | 可以使用 | 某些情況 | 某些情況 | 如果你的Windows Installer的版本在2.0以后,那么你可以使用Minor 或者SmallUpgrade |
| 移動或者刪除一個component | 可以使用 | ? | ? | ? |
| 改變了一個已存在的component的component code | 可以使用 | ? | ? | ? |
| 改變了一個已存在的component的key file | 可以使用 | ? | ? | ? |
| 修改、刪除、添加下面任何一種:文件、快捷方式、注冊鍵值 | 可以使用 | 可以使用 | 可以使用 | 如果文件、快捷方式,或者注冊鍵值不僅屬于一個component,而且這個component還被多個Features共享,那么只能使用Major Upgrade |
下圖說明了不同升級所要修改的code:
| ? | Package Code | Product Version | ProductCode | Upgrade Code |
| Small Upgrade | X | ? | ? | ? |
| Minor Upgrade | X | X | ? | ? |
| Major Upgrade | X | X | X | ? |
以上所述是IS為我們提供的可以作為完整安裝包的三種升級,還有一種升級類型叫做升級補丁,升級補丁是作為一個QuickPatch Project創建的,必須指定你要修補的特定的版本。升級補丁主要針對于對文件、鍵值的增、刪、改,如果選擇使用升級補丁升級的你的產品,那么此次升級的變動非常的小。
實例演示
一.發布最初版本:
此版本適用于用戶首次安裝:
包名為:開票子系統.exe
?
?
二.發布升級補丁:
安裝此補丁前系統中已安裝了開票子系統.exe
包名為:開票子系統升級補丁1.01.exe
安裝說明:升級完成之后安裝路徑下的grdes50.dll、gregn50.dll兩個控件的版本 由5.0.0.7變為了5.5.0.0,實際上是做了覆蓋操作。
?
三.基于補丁的升級:
安裝此補丁前系統中已將開票子系統.exe升級為開票子系統升級補丁1.01.exe
包名為:開票子系統升級補丁1.02.exe
?
安裝說明:升級完成之后,安裝目錄下的rep文件夾下的1001.grf文件被刪除。
?
四.較小升級:
安裝此升級之前系統中只安裝了開票子系統.exe
包名為:開票子系統較小升級1.10.exe
?
安裝說明:升級完成之后,安裝包結構上無任何變化,實際上已經添加了一個空 的Component
?
五.次要升級:
較小升級必須安裝在一個完整的安裝包之上,所以以上的更新包中只有一、四滿足條件,方便起見制作與四中安裝包之上。
安裝此升級之前將開票子系統.exe已升級為開票子系統較小升級1.10.exe
包名為:開票子系統次要升級1.50.exe
?
?
安裝說明:在已存在的Feature下新建了一個Component,其中添加了“破解.txt” ,
安裝目錄rep文件夾下新增了“破解.txt” 。
?
?
六.主要升級:
次要升級與較小升級相同,必須安裝在一個完整的安裝包之上,方便起見制作與五中安裝包之上。
安裝此升級之前將開票子系統較小升級1.10.exe已升級為開票子系統次要升級1.50.exe
包名為:開票子系統主要升級2.00.exe
?
安裝說明:刪除了整個Feature,安裝目錄下整個rep文件夾被刪除
轉載于:https://www.cnblogs.com/Cindy_weiwei/archive/2010/08/31/1813801.html
總結
以上是生活随笔為你收集整理的InstallSield更新包快速入门文档----感谢原作者ㄣ齊¨彡仯乄的无私提供的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孝顺孝顺,孝不如顺
- 下一篇: 工作流与Petri net的关系