如何根据对话框设置的属性有条件地运行Installshield自定义操作?

时间:2013-10-03 08:29:39

标签: installshield

我有一个使用InstallShield 2012创建的安装程序。我现在需要允许用户选择在卸载过程中运行自定义操作。

为实现这一目标,我目前在其中一个对话框中添加了一个复选框。该复选框与属性相关联,默认设置为“True”(“值”设置为“1”)。在PropertyManager中,已添加属性值为“1”。

对于自定义操作,条件设置为REMOVE="ALL" AND MyCheckboxProp=1。运行安装程序时,最初会选中复选框。但是,查看日志我可以看到,即使复选框切换到未选中状态,条件也始终计算为True。

当复选框未标记时,安装程​​序日志会报告:

PROPERTY CHANGE: Deleting MyCheckboxProp property. Its current value is '1'.

起初,我想知道这个问题是否与行动与“延期执行”有关。但是,即使使用“立即执行”运行测试操作,我也可以看到条件总是评估为“真”。

如上所述,显示属性值的测试操作显示它始终为“True”。

我缺少一步吗?

1 个答案:

答案 0 :(得分:2)

缺少的关键概念是解释MSI的Windows Installer组件实际上具有public, private, and restricted public properties的概念。

在这种情况下,在用户界面和执行阶段都会引用属性值。 documentation for public properties表示:

  

在用户界面期间要设置的属性   安装然后传递到执行阶段   安装必须公开。

要将属性标记为公共属性,应指定该属性,使其名称仅包含大写字母(请参阅Restrictions on Property Names)。在问题中给出的示例中,属性名称包含一些小写字母,因此被解释为私有。

将属性标记为公共的额外好处是它允许属性为set on the command line,然后可以在执行静默安装时指定该属性。