坚持QtQML,坚持移动互联网

http://www.qtcn.org/bbs/u/121778  [收藏] [复制]

toby520

将QtCoding进行到底,做Qt的宠儿

  • 89

    关注

  • 164

    粉丝

  • 3579

    访客

  • 等级:精灵王
  • 身份:论坛版主
  • 总积分:1262
  • 男,1986-11-17

最后登录:2024-04-29

更多资料

日志

关于Installshield 2010安装包如何更新旧版本

2013-04-24 13:53
制作更新包的主要属性:
在给出升级包类型之前,首先说明几个概念:
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指定的路径下会安装,而且以前的路径也会卸载安装。大家研究一下。

谢谢大家的阅读,以后如果有更好的更新会尽快的与大家分享。




分类:Installshield|回复:0|浏览:3242|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:04-29 10:19
©2005-2016 QTCN开发网 版权所有 Gzip disabled