Wix UI条件最佳实践

时间:2009-06-24 14:52:53

标签: user-interface wix windows-installer

我有一个相当复杂的安装程序,我正在Wix编写,它有很多自定义对话框选项,基于你正在安装的组件。通常,默认设置很好,因此无人参与的安装会成功,但这种自定义有助于解决问题。

我想知道的是,Wix做UI条件的最佳做法是什么?我注意到Wix会评估所有<Publish>标记,无论最后一个标记是否为true,这导致了很多这样的代码:

<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="Component1Questions" Order="1">INSTALLCOMPONENT1</Publish>
<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="Component2Questions" Order="2">NOT INSTALLCOMPONENT1 AND INSTALLCOMPONENT2</Publish>
<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="Component3Questions" Order="3">NOT INSTALLCOMPONENT1  AND NOT INSTALLCOMPONENT2 AND INSTALLCOMPONENT3</Publish>
<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">NOT INSTALLCOMPONENT1  AND NOT INSTALLCOMPONENT2 AND NOT INSTALLCOMPONENT3</Publish>

同样在每个对话框的“后退”部分。这是最佳实践吗?有没有办法对Publish元素进行短路评估并采用第一个返回true的方法?

2 个答案:

答案 0 :(得分:2)

您已经使用Publish / @ Order元素来简化代码,但我建议尽可能明确。

您无论如何都可以简化逻辑,而不用担心订单价值......

<Publish ... Value="Component1Questions">CMP1 And Not (CMP2 Or CMP3)</Publish>
<Publish ... Value="Component2Questions">CMP2 And Not (CMP1 Or CMP3)</Publish>
<Publish ... Value="Component3Questions">CMP3 And Not (CMP1 Or CMP2)</Publish>
<Publish ... Value="VerifyReadyDlg">Not (CMP1 Or CMP2 Or CMP3)</Publish>

答案 1 :(得分:0)

我仍然不知道这是不是一个好习惯,但我得到的结果与此类似:

<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="Component1Questions" Order="4">INSTALLCOMPONENT1</Publish>
<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="Component2Questions"  Order="3">INSTALLCOMPONENT2</Publish>
<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="Component3Questions" Order="2">INSTALLCOMPONENT3</Publish>
<Publish Dialog="Questions" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="1">1</Publish>

我的意思是,反转订单号并忘记合成条件。最后,你拥有它的条件数量是相同的,但它更易于维护和读取。 当然,这意味着引发了多个“NewDialog”事件,但只显示了最后一个事件。有没有人知道没有这么做的充分理由?