我在前面一篇,已经谈过Basic MSI project。那让人不禁要问它们的区别是:
从功能上来说,Installshield Script Project弹性更强,可以定制的东西更多,对话框可以方便的定制,已经控制他们的显示序列。
从机制上来说,Installshield Script基于Installshield Installe Engine完全不需要Windows Installer Engine。它可以支持更多的Installshield自己的函数,对话框。
下面从如下几个常见的技术点来了解Installshield Script Project
1.维护模式
OnInstallaing()
它对应于-unistall 命令,在Installshield 2009及之前的版本,在控制面板中选择"Uninstall”会触发这个命令。但在Installshield 2011之后,卸载会调用
-removeonly,首先响应这个消息的函数是OnMaintainUIBefore(),默认的代码会协作对应的产品。
REMOVEONLY & REMOVEALLMODE & REMOVEALL
REMOVEONLY 与 REMOVEALLMODE 都是一个flag,其值是true or false。
通过调用-removeonly 会将REMOVEONLY 置为true,即告诉开发者,这是通过命令行调用的卸载模式。
通过在Maintaince Dialog选择REMOVEALL(一个Installshield预定义的一个值),会将REMOVEALLMODE置为true。
静默安装
需要先录制安装脚本,即.iss文件。需要注意的是,它的安装过程,必须严格按照.iss中描述的那样,否则会安装失败。如果安装过程有很多条件选择,需要录制多个.iss文件。
2.升级安装
对应Installshield script,升级的时候,需要注意merge module可能不会被更新。暂时还没有找到原因,目前采用的是walk around的方式,即修改merge modulecomponent的id,来完成升级安装。