2009-06-24 7 views
1

J'ai un programme d'installation assez compliqué que j'écris dans Wix qui a beaucoup d'options de dialogue personnalisées en fonction des composants que vous installez. Généralement, les valeurs par défaut sont correctes, et donc une installation sans surveillance réussira, mais cette personnalisation aide les choses. Ce que je me demande, c'est quelles sont les meilleures pratiques dans Wix pour faire des conditionnels de l'assurance-chômage? J'ai remarqué que Wix évalue tous les <Publish> balises, peu importe si oui ou non la dernière évaluation true, ce qui conduit à beaucoup de code comme ceci:Wix meilleures pratiques conditionnelles UI

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

Et de même sur les sections « arrière » pour

Répondre

2

Vous utilisez déjà l'élément Publish/@ Order pour simplifier le code, vous pouvez utiliser l'élément Publish/@ Order pour simplifier le code. cependant, je conseillerais d'être aussi explicite que possible

Vous pouvez simplifier la logique de toute façon et ne pas vous inquiéter de la Valeur de la commande ...

<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

La logique est plus simple mais légèrement incorrecte. Si je veux installer les 3 composants, le bouton suivant ne fonctionnerait pas dans ce cas. – Jeff

+0

Ah, donc ils ne s'excluent pas mutuellement. Cela a plus de sens alors;) – saschabeaumont

0

Je ne sais toujours pas si elle est une bonne pratique ou non, mais je reçois les mêmes résultats avec quelque chose comme ceci:

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

Je veux dire, inverser la numéros de commande et oublier de composer les conditions. À la fin, le nombre de conditions que vous avez c'est pareil mais c'est beaucoup plus maintenable et lisible. Bien sûr, cela signifie que plus d'un événement "NewDialog" est levé mais seul le dernier est affiché. Est-ce que quelqu'un connaît une bonne raison de ne pas le faire?