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的文件都累加吧?

 

posted on 2020-09-11 19:14  两轮明月  阅读(1281)  评论(0编辑  收藏  举报

导航