zoukankan      html  css  js  c++  java
  • InstallShield 打包如何做到支持升级安装 [InstallShield support upgrade installation]

    升级安装类型介绍

    升级安装主要有三种类型,Small Upgrade,Minor Upgrade, Major Upgrade。

    官方最推荐的是Minor Upgrade,即使是主版本的升级(比如1.0->2.0),也建议使用Minor Upgrade的方式,因为Minor Upgrade是一种覆盖安装,不需要再重新选择路径、输入参数等操作,直接操作即可。

    Major Upgrade的缺点:1. 是对版本号(Version Format:必须是主版本修改)、Product Code(Product Code必须有变化)有严格的要求,2.是安装相当于重新安装,需要重新选择安装路径、重新输入界面上的配置参数。所以不到万不得已,不推荐Major Upgrade

    制作升级安装包步骤

    在上一个版本的ism文件的基础上修改版本号

    配置文件备份与恢复

    通过编写InstallScript脚本,在新版本安装包替换旧文件之前,调用编写的“BackupConfigFiles” Custom Actions备份包含了配置的配置文件,然后在替换完文件后,在把刚备份的配置文件恢复到指定目录中,如下图所示:

    BackupConfigFile的Custom Actions

    因为在备份配置文件阶段,还没有正式替换旧文件,所以如果想调用安装包里的文件,只能把这些文件放到Support Files里,所以这里调用的BackupConfigFilesForPatch.bat就是放在Support Files里面

     

     BackupConfigFilesForPatch.bat 里就是拷贝的cmd命令

     如果发现制作的Installshield升级安装包无法替换文件,请参考这个链接解决

    版本间文件删除恢复

    如果您在版本间(比如1.0->2.0)删除了文件,那么你会发现新的安装包虽然能安装成功,并且替换版本号,但是所有的文件都没有替换,所有的文件都是旧的。这个时候可以参考这个连接解决。

    Minor Upgrade不允许删除以前的打包文件,如果删除了就不能再做Minor Upgrade Installation了,只能走Major Upgrade,但是不建议这么做,最好是使用脚本在打包的时候恢复这些文件。

    下面的方法可以查询哪些文件被删除,能否制作从1.0升级到2.0的安装包。

    打开2.0的ism文件,在最左侧找到Upgrades的tab

     选择1.0的exe安装文件

     点击“Build”按钮,InstallShield会自动分析哪些文件被删除了。必须把删除的文件找回来,如下图,就有4个文件被删除了

    动态文件压缩与替换

    网站项目的文件打包经常会带版本号,如“app.dc7b77af.css”,每次build编译出来的文件都不一样,为了解决这样的问题,我们在打包的时候要把这些文件打包成压缩包,在安装的时候在解压即可。

    执行cmd命令把文件夹通过在build server上的7-zip软件压缩成.exe文件,这种exe文件通过bat就可以轻松解压

     在ism的自定义脚本里,设置好执行命令和顺序就可以轻松解压,看清下面的红框里的重点。命令很简单,就是   ***.exe -o"解压路径" -y

    常见问题

    获取Support Dir路径为空

    制作的升级安装包无法替换文件

    配置文件被替换,无法保留配置文件

    如何优雅的恢复之前弃用但Upgrade必须要用的文件

    如何解决build中带版本号的文件,不能把之前所有build的文件都累加吧?

     

  • 相关阅读:
    Git 学习小问题记录
    Spring缓存源码剖析:(一)工具选择
    最佳线程数
    Python 装饰器备忘
    使用SCSS扩展Bootstrap4
    Flask 路由相关操作
    Flask开发环境搭建
    Python数据分析开发环境
    Python中的矩阵操作
    Windows 安装 MySQL 8.0.11
  • 原文地址:https://www.cnblogs.com/zhengshuangliang/p/13653527.html
Copyright © 2011-2022 走看看