基本概念:
在给出升级包类型之前,首先说明几个概念:
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相差不多,级别看实际情况而定。
下面给出常见的几种情况升级级别的选择:

下图说明了不同升级所要修改的code:

以上所述是IS为我们提供的可以作为完整安装包的三种升级
Major Upgrade 的安装包的制作方法
1.选择 “Installation Designer” 里的 “Media” 下的 “Upgrade”
2.选择了”Upgrade” 后,右边如下图显示,右键点击”Upgrade Windows Installer Setup”,选择”Add Major Upgrade Item”, 并在右边如下图进行设置。
3.Major Upgrade的设置如下图所示,这里主要版本,如果选择了Any earlier version, 该安装包只升级比它版本小的安装包,比较版本时对x.x.x.x这种,忽略最后一位。如果我们中间发布了Beta版的包,那么正式发布时升级就回游问题,故经过试验选择一个自己设置的区间,设置了版本最大和最小值,结果对任何版本的包都可以正确升级。

4.做好上面的设置后,buid前需要修改产品版本和product code 以及package code。

按照这种设置即可实现Major Upgrae的升级方式,保证了每次产品的升级,文件更新都可以完全覆盖到。
本文介绍了安装包升级中的Major Upgrade、Minor Upgrade和Small Upgrade概念,重点讲述了如何使用InstallShield2010制作Major Upgrade安装包,包括升级包的设置步骤和注意事项,确保能正确覆盖和升级不同版本的产品。


7827

被折叠的 条评论
为什么被折叠?



