2009-06-24 13 views
1

私はWixで書いているかなり複雑なインストーラを持っていますが、インストールするコンポーネントに基づいて多くのカスタムダイアログオプションがあります。一般的に、デフォルトは正常です。したがって、無人インストールは成功しますが、このカスタマイズがあれば役立ちます。Wix UI条件ベストプラクティス

UI条件を実行するためのWixのベストプラクティスは何ですか?私はウィックスにかかわらず、このようなコードの多くにつながっている、trueに評価され、最後の1、かどうかの、全て<Publish>タグを評価していることに気づいた:

<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> 

と同様に、「バック」のセクションに

答えて

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> 
+0

ロジックは単純ですが、やや誤っています。 3つのコンポーネントすべてをインストールしたい場合、次のボタンはこの場合は機能しません。 – Jeff

+0

ああ、彼らは互いに排他的ではありません。それは当時より意味をなさない;) – saschabeaumont

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」イベントが発生しますが、最後のイベントのみが表示されます。誰もそれをしない理由が分かっていますか?

関連する問題