跟小D每日学口语

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

 

image

 

二.发布升级补丁:

安装此补丁前系统中已安装了开票子系统.exe

包名为:开票子系统升级补丁1.01.exe

image

安装说明:升级完成之后安装路径下的grdes50.dll、gregn50.dll两个控件的版本 由5.0.0.7变为了5.5.0.0,实际上是做了覆盖操作。

 

三.基于补丁的升级:

安装此补丁前系统中已将开票子系统.exe升级为开票子系统升级补丁1.01.exe

包名为:开票子系统升级补丁1.02.exe

 

image

安装说明:升级完成之后,安装目录下的rep文件夹下的1001.grf文件被删除。

 

四.较小升级:

安装此升级之前系统中只安装了开票子系统.exe

包名为:开票子系统较小升级1.10.exe

image

 

安装说明:升级完成之后,安装包结构上无任何变化,实际上已经添加了一个空 的Component

 

五.次要升级:

较小升级必须安装在一个完整的安装包之上,所以以上的更新包中只有一、四满足条件,方便起见制作与四中安装包之上。

安装此升级之前将开票子系统.exe已升级为开票子系统较小升级1.10.exe

包名为:开票子系统次要升级1.50.exe

 

image

 

安装说明:在已存在的Feature下新建了一个Component,其中添加了“破解.txt” ,

安装目录rep文件夹下新增了“破解.txt” 。

 

 

六.主要升级:

次要升级与较小升级相同,必须安装在一个完整的安装包之上,方便起见制作与五中安装包之上。

安装此升级之前将开票子系统较小升级1.10.exe已升级为开票子系统次要升级1.50.exe

包名为:开票子系统主要升级2.00.exe

 

image

安装说明:删除了整个Feature,安装目录下整个rep文件夹被删除

posted on 2010-08-31 16:35  海洋女神  阅读(2771)  评论(1编辑  收藏  举报

导航