关于   InstallShield   Projects:   
    
  InstallShield   可以创建三种类型的项目(Project)   
  1、InstallScript   Project   
  2、InstallScript   MSI   Project   
  3、Basic   MSI   Project   
  前者完全是   InstallShield   自己的功能实现   
  后两者基于   Windows   Installer,InstallScript   MSI   Project   在   Windows   Installer   基础上提供了一些   InstallShield   自己的扩展功能支持。   
  Basic   MSI   Project   完全基于   Windows   Installer,制作出来的安装程序完全符合W2K相关标准,因此比较适合在   Windows   域中使用。   
  InstallScript   MSI   Project   制作出来的安装程序中可以见到   xxx.msi   文件。该   msi   文件离开了   InstallShield   的   engine   无法独立运行。而   Basic   MSI   Project   的   msi   文件是可以独立运行的(在域里面就知道好处了)   :)   
    
  InstallShield   做补丁的机制也与   MSI   补丁有区别。   
    
    
    
  关于版本升级补丁和热修复补丁:   
    
  说到做补丁,也有很多不同的方法   
  1、很多如网络游戏、瑞星等,安装了某一个版本比如   1.05,之升级动作是通过检查有否更新的文件——验证文件数字签名(比如MD5摘要信息),但升级后的软件是哪个版本呢?   
    
  一个软件的版本实际上是组成该版本的所有特定版本文件的集合。   
    
  1的方式可以用Winzip/Winrar等等做一个自解压文件,或者在线升级程序下载新的文件覆盖本地文件,甚至可以用补丁制作工具做成exe,在本地执行以二进制方式修改本地文件等等方式来实现。我见过瑞星工程师在域里就是用一个启动脚本在客户端运行服务器共享目录里的批处理复制文件覆盖本地文件...   
    
  2、Hotfix   
  类似于Windows的hotfix/servicepack这样的方式的补丁,则是一种非线性的升级方式。与方式1类似,但hotfix方式并不是“升级”——Upgrade,更准确地说应该是“补丁”——patch。也就是说,在版本   V1.05   之上有若干补丁,你可以装这些补丁(微软的Service   Pack往往包含了前面发布的相关Hotfix和一些其他的工具)中的某一些。   
    
  参考“一个软件的版本实际上是组成该版本的所有特定版本文件的集合”,可知这个概念不会影响到当前的“版本”这一概念。   
    
  这一点,与1相似。不同的是,技术实现上你可以看到每一个hotfix实际上是一个独立的product   installation。   
  最典型地:每装一个   hotfix,添加删除程序中会多一个条目。如果允许的话(比如hotfix之间没有互相影响),可以单独删除某个hotfix。   
    
  3、Transform   
  从上面看可以知道,Hotfix或者SP并不是将你的软件升级成新版本(或者仅仅升级Build),那么要把V1.05版本升级到2.0怎么做呢?   
  InstallShield   MSI   Project/Basic   MSI   Project   的   patch   实际上就是   Windows   Installer   机制中的   trasform。   
  制作出来的“升级”补丁,也就是“升级包”。   
    
  比如在2.0版的安装程序中针对1.05做了一个升级补丁   Update1.05To2.0.msi/Update1.05To2.0.exe,运行之后,你会发现添加删除程序中并没有增加一个新的“产品”项,而原来的   1.05   的项变成了   2.0   的。   
  这才是真正意义上的升级。   
    
  因此,可以把3这种方法看作是   
  1.05   版本   +   1.05-2.0   版本所需要做出的“所有”改变(不仅仅是文件更新、新增/删除文件,甚至可能有注册表信息、快捷方式甚至数据库配置等等的更改)的集合。假如   1.05   的所有   hotfix   都装了(或者ServicePack),就相当于   2.0   的话,那么你可以理解为   所有   hotfix(sp)加起来就是升级包,呵呵。   
    
  InstallShield   提供的补丁制作功能很不错,我每发布一个新版本的客户端,会发布一个新版本的完整安装程序,然后发布一个个针对指定版本的升级包(也可以在一个升级包中支持对多个版本的升级,但文件可能稍大)。   
    
    
  补充说明:   
  在   InstallShield   有两个功能:   
  Upgrades   
  Patch   Design   
  前者主要用于制作全新的完整的安装(升级)包,运行时如果当前计算机上没有旧版本,则执行完整安装。如果有,则升级原有安装。   
  后者主要制作版本升级补丁,比前者小,更有针对性,比较适合在网络上发布或者用于在线升级。但假如在从一个版本到另外一个版本的升级过程中需要移动某些文件的位置,则一定要用Upgrade方式,而非Patch方式。   
  另外,help中提到   Patch   方式不能制作   InstallScript   MSI   Project   的   Major   升级,只能用Upgrade方式。但在实际应用中,我的确用一个   Patch   将客户端软件从   2.5   Build   74   升级到了   3.0   Build   76   版本(2.50.0074   到   3.00.0076)

关于InstallShield Projects[转]的更多相关文章

  1. 如何设置Installshield中 feature的选中状态

    原文:如何设置Installshield中 feature的选中状态 上一篇: 使用strtuts2的iterator标签循环输出二维数组之前一直有筒子问如何设置Installshield中 feat ...

  2. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  3. installshield使用教程

    从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,转而让大家去安装使用第三方的打包工具“InstallShield Limited Edition for Vis ...

  4. [No00009D]使用visual studio 2015 update3打包程序安装包的简单方法(不需要InstallShield)

    注意: 该方法只适用于小型软件的打包发布: 该打包向导可以预先检查需要的运行库支持: 由于visual studio自2012后取消掉了自带的打包程序,如果有需要打包安装,需要使用一个叫用Instal ...

  5. wordpress默认index主页选择Your Projects提示无法找到项目解决办法?

    wordpress_4.5.3默认index主页选择Your Projects下部署的项目发现报错无法找到目标解决办法: 1.其实细心的小伙伴已经发现问题出在哪里,跳转后链接地址发生了错误没有加loc ...

  6. A Complete List of .NET Open Source Developer Projects

    http://scottge.net/2015/07/08/a-complete-list-of-net-open-source-developer-projects/?utm_source=tuic ...

  7. SSISDB1:使用SSISDB管理SSIS Projects

    使用Project Deployment Model,将SSIS Project部署到Integration Services Catalog之后,SSISDB负责管理SSIS Project.在SS ...

  8. C/S打包 客户端/windows程序 InstallShield

    开发完成后,我们可以直接在Debug目录下启动exe,运行程序. 但是,要如何安装,添加到开始菜单.桌面快捷方式.任务栏等.如Office安装效果: 开始菜单: 快捷菜单: 打包步骤: 1.下载Ins ...

  9. 无法启动"D\projects\hello\Debug\hello.exe" 系统找不到指定的文件。[LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏]

    这两天安装Visual Studio遇到这样的一个问题,用自己的电脑和公司的电脑都出现同样的问题.两台电脑都是新系统,按理来说是没有问题的.但是一出现问题,对于我这个小白来说,还是耗费了挺多精力都无果 ...

随机推荐

  1. 【Angular】排序

    Correct way to integrate Jquery plugins in Angular.js gaurav123337/AngularOtherJqueryPluginDemo 超强的拖 ...

  2. jquery 学习第一课之start

    1.$选取符 ( $ == jQuery ) (1) $("div").addClass("special");选取本页面中的所有<div>元素,然 ...

  3. ZOJ 3469 Food Delivery

    题目大意: 有n个人,住在一条直线上.第i个人的坐标是Xi,街上有个外卖餐馆的位置是X,现在餐厅工作人员要给街上的每个人送饭,送完之后再回到餐厅,送饭人的速度是V,每个人有个不满意值,当这个人送餐时间 ...

  4. 测试使用wiz来发布blog

    晚上尝试了下用wiz写随笔并发布,貌似成功了,虽然操作体验和方便性上不如word,但起码它集成了这个简单的功能可以让我用:如果能让我自动新建blog文章并自动定时更新发布就完美了.2013年7月5日1 ...

  5. 数据结构(LCT动态树):BZOJ 1036: [ZJOI2008]树的统计Count

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 12266  Solved: 4945[Submit ...

  6. UNIX环境下的共享内存

    好久没更新博客了,最近几个月一直在忙项目,现在终于有时间进一步学习了.这次记录的是unix环境中共享内存的使用方法.  在我理解,共享内存就是在内存中开辟一段空间,各个毫不相干的进程就可以通过访问这段 ...

  7. RabbitMQ-优先级(priority)队列/消息

    就像在日常生活中,事情有轻重缓急一样.我们对于需要处理的消息也有这样的需求. 例如重要的消息我要尽快的得到处理,当然我们可以给重要的消息开个“VIP通道”,但是VIP数量很多,并且VIP也分层次呢? ...

  8. python列表操作总结

    list是python中非常重要的类型/数据结构,总结如下: 符号说明 l:列表 l2:新列表 e:元素 index:位置 方法: 原地修改: l.append(e) l.insert(index, ...

  9. linux Tomcat restart脚本简单版

    linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32  #找到tomcat进程的id并kill掉 ps -ef |grep t ...

  10. autoIT 自动化上传/下载文件图文详解【python selenium】

    情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...