zoukankan      html  css  js  c++  java
  • 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文件夹被删除

  • 相关阅读:
    文件操作工具类
    批量插入数据到 MySQL的几种方式
    C#队列学习笔记:RabbitMQ使用多线程提高消费吞吐率
    C#队列学习笔记:RabbitMQ延迟队列
    C#队列学习笔记:RabbitMQ优先级队列
    C#队列学习笔记:RabbitMQ实现客户端相互通讯
    C#队列学习笔记:RabbitMQ搭建集群
    C#队列学习笔记:RabbitMQ安装及使用
    C#队列学习笔记:RabbitMQ基础知识
    C#队列学习笔记:MSMQ入门二
  • 原文地址:https://www.cnblogs.com/Cindy_weiwei/p/1813801.html
Copyright © 2011-2022 走看看