Windows installer 如何在installshield中刷新向导上的向导UI

Windows installer 如何在installshield中刷新向导上的向导UI,windows-installer,installation,installshield,installshield-2016,Windows Installer,Installation,Installshield,Installshield 2016,我正在installshield 2016的一个基本MSI installshield项目中工作。向导步骤中有一个编辑字段和文本区域。文本区域实际上是一个错误标签Visible属性最初设置为false 在将一些输入放入编辑字段后,用户按向导步骤上的Next>按钮。我们对用户输入执行一些验证,然后如果用户输入有效,则将私有属性IsUserInputValid设置为1。IsUserInputValid属性的初始值为0。hasvalidaterun标志的值为0 现在,在行为部分,我添加了一个事件来显示

我正在installshield 2016的一个基本MSI installshield项目中工作。向导步骤中有一个编辑字段和文本区域。文本区域实际上是一个错误标签<文本区域控件的code>Visible属性最初设置为
false

在将一些输入放入编辑字段后,用户按向导步骤上的
Next>
按钮。我们对用户输入执行一些验证,然后如果用户输入有效,则将私有属性
IsUserInputValid
设置为1。
IsUserInputValid
属性的初始值为0。
hasvalidaterun
标志的值为0

现在,在行为部分,我添加了一个事件来显示编辑文本区域控件,如下所示:

HasValidationsRun = 1 AND  IsUserInputValid=0


单击
下一步>
按钮后,错误标签不会显示。但是,如果我更改通过验证的输入,那么向导将移动到下一步,在转换发生之前,该标签将显示一秒钟。如果我正确定义了
Show
事件的条件,我不知道为什么UI没有自行刷新。

您需要添加一个SetProperty控件事件,将属性设置为新值。这会告诉UI更新引用已更改属性(或包含已更改属性的文本等)的条件。Windows Installer不监视更改属性的其他方法。请参阅我的相关答案:

  • -涵盖一般更新,包括可见性
  • -涵盖文本更新,但同样的原则适用

如何设置
IsUserInputValid
HasValidationRun
?我假设它在自定义操作中,而不是在SetProperty控件事件中。如果是这样的话,那就是问题所在,如果没有人比我强,我可以写一个答案。是的
IsUserInputValid
变量存储从自定义操作返回的整数值。单击
下一步>
按钮,我调用该自定义操作。