About InstallShield Condition

在使用InstallShield时,可以采用Scripts,也可以使用Basic MSI等其他方式制作安装包。

最近我接触了一下以Basic MSI制作安装包的过程,从中发现Condition在其中扮演着重要的角色,按照用途的不同大致可以分为两种:

1、安装包在检查目标机器环境时的条件限制。

这种条件一般反映在开始安装时,弹出个对话框(也可是其他形式)告诉用户“您机器上还不满足安装条件,请安装xxx”,它有可能只是个提示,后续还能安装,也有可能无法进行后续安装。这种条件在InstallShield中是如何设置的?

一般(最好,虽然有有有好的界面可以设置,但是缺少灵活性)使用General Information->Product Properties->Install Condition来设置条件,这些条件语句一般都是以目标机器的某些系统变量为基础做设置的,那么问题就出现了,如何获得和存储这些值呢?

System Search就很好的解决了这一问题,我们可以用它搜索目标机器是不是安装了Visual Studio,是不是有某些文件(bt啊),然后再以某个Property(可以事先新建所需要的Property)来存储,甚至可以直接冠以Condition,让其成为General Information->Product Properties->Install Condition中的一个条件。

ok,这样第一种情况就算搞定。

2、安装包在安装过程中的条件判断。

这种情况比较复杂,所以只描述一下对于Customer Action的限制。

在Basic MSI安装包中会有很多个Customer Action,而目标机器的情况也很复杂,因此就需要根据情况来判定哪些Action该运行,哪些不该运行。

(1)全新安装时,可以使用存储在Property中值来做Condition;

(2)完全卸载和更改(Repair、Update)时,除了使用Property,还可以使用诸如Installed(软件已经安装,即相对于Add/Remove Program)、Not Installed(软件没有安装)、REMOVE=“ALL”(完全卸载),以及!FeatureName=&FeatureName(ReInstall时会用到)等方法进行限制,具体的内容可以参考installshield_conditions.pdf,也可以参考InstallShield的联机帮助内容:Condition Statement Syntax和Examples of Condition Statement Syntax等。

Author:dulvyizhihua
原文地址:https://www.cnblogs.com/dulvyizhihua/p/1340156.html