Installshield 总结系列之Installshield Script Project

我在前面一篇,已经谈过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,来完成升级安装。

原文地址:https://www.cnblogs.com/jamesmile/p/2711498.html