2010-11-17 9 views
2

Je suis novice dans WiX et j'essaie de personnaliser la file d'attente des boîtes de dialogue en ajoutant la nouvelle. Le nouveau nom de dialogue est ServerChoice et le flux est:Nouvelle boîte de dialogue dans WiX, en cliquant sur Précédent, la boîte de dialogue est ignorée

SetupTypeDlg < -> Full ou typique < -> ServerChoice < -> VerifyReadyDlg

ou

SetupTypeDlg < -> Personnaliser < -> CustomizeDlg < - > ServerChoice < -> VerifyReadyDlg

Le seul problème est dans le premier cas à VerifyReadyDlg. 'Back' m'amène à SetupTypeDlg et ignore ServerChoice bien que dans le second flux cela fonctionne comme requis.

Source:

<UI> 
     <DialogRef Id="ServerChoice" /> 
     <Publish Dialog="SetupTypeDlg" Control="TypicalButton" Event="NewDialog" Value="ServerChoice">1</Publish> 
     <Publish Dialog="SetupTypeDlg" Control="CompleteButton" Event="NewDialog" Value="ServerChoice">1</Publish> 
     <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="ServerChoice">1</Publish> 
     <Publish Dialog="ServerChoice" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> 
     <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="ServerChoice">1</Publish> 
     <Publish Dialog="ServerChoice" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">WixUI_InstallMode = "InstallCustom"</Publish> 
     <Publish Dialog="ServerChoice" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"</Publish> 
     <Publish Dialog="ServerChoice" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="3">WixUI_InstallMode = "Change"</Publish> 
     <Publish Dialog="ServerChoice" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="4">WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"</Publish> 
    </UI> 

Une aide pour un débutant? :)

+0

Il me semble qu'il y a une information manquante ici. Si vous incluez également des entrées de publication fournies par WiX, il y aura 2 entrées Publier pour le bouton Précédent de VerifyReadyDlg. Vous pouvez essayer de consulter la table ControlCondition du MSI en utilisant Orca ou InstEdit, ou utiliser dark.exe de Wix pour décompiler le MSI et regarder le fichier WiX résultant pour vous assurer que vous n'avez pas plusieurs événements pour le bouton de retour VerifyReadyDlg. –

+0

Merci pour votre réponse. Apparemment vous avez raison, j'ai trouvé ce qui suit: VerifyReadyDlg | Retour | NouveauDialog | SetupTypeDlg | WixUI_InstallMode = "InstallTypical" OU WixUI_InstallMode = "InstallComplete" et VerifyReadyDlg | Retour | NouveauDialog | ServerChoice | 1 Comment puis-je supprimer le premier en utilisant WiX? – Cyril

+0

grrr ... ne peut pas sortir comme un code. Quel tag dois-je utiliser? Fini de lire les manuels ... – Cyril

Répondre

4

De quel type d'IU faites-vous référence (Mondo?). Cette information n'est pas présente dans votre code. Je pense que le commentaire de daddyman est correct, vous avez probablement plusieurs événements pour ce bouton Retour, puisque Mondo lui-même accroche ses propres «gestionnaires» sur cet événement de bouton-clic.

J'ai récemment créé un flux de dialogue de l'interface utilisateur personnalisée et mon approche ne référençait pas du tout WiXUI_Mondo. Au lieu de cela, j'ai créé ma propre interface utilisateur basée sur le code source Mondo (vous devez vérifier les sources WiX). À la fin j'ai ce code (les parties de code non pertinentes ont été enlevées) et cela fonctionne très bien.

<Fragment> 
    <!-- this is based on the WixUI_Mondo dialog set --> 
    <UI Id="WixUI_MyNewUI"> 
     <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> 
     <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" /> 
     <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> 

     <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> 
     <Property Id="WixUI_Mode" Value="Mondo" /> 

     <DialogRef Id="ErrorDlg" /> 
     <DialogRef Id="FatalError" /> 
     <DialogRef Id="FilesInUse" /> 
     <DialogRef Id="MsiRMFilesInUse" /> 
     <DialogRef Id="PrepareDlg" /> 
     <DialogRef Id="ProgressDlg" /> 
     <DialogRef Id="ResumeDlg" /> 
     <DialogRef Id="UserExit" /> 

     <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">1</Publish> 
     <!-- we do not use the SetupTypeDlg which allows user to choose either Typical, Complete or Custom installation; this ensures InstallCustom schema is run --> 
     <Publish Dialog="WelcomeDlg" Control="Next" Property="WixUI_InstallMode" Value="InstallCustom" Order="2">1</Publish> 

     <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">WixUI_InstallMode = "InstallCustom"</Publish> 
     <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="MyDlg1">1</Publish> 

     <Publish Dialog="MyDlg1" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="1">MY_CONDITION_PROPERTY = 0</Publish> 
     <Publish Dialog="MyDlg1" Control="Next" Event="NewDialog" Value="MyDlg2" Order="2">MY_CONDITION_PROPERTY = 1</Publish> 

     <Publish Dialog="MyDlg2" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="1" /> 
     <Publish Dialog="MyDlg2" Control="Back" Event="NewDialog" Value="MyDlg1">1</Publish> 


     <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyDlg1" Order="1">WixUI_InstallMode = "InstallCustom" and MY_CONDITION_PROPERTY = 0</Publish> 
     <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyDlg2" Order="2">WixUI_InstallMode = "InstallCustom" and MY_CONDITION_PROPERTY = 1</Publish>  
    </UI> 

    <UIRef Id="WixUI_Common" /> 
    <UIRef Id="WixUI_ErrorProgressText" /> 
</Fragment> 

+2

Merci. Votre code m'a aidé à trouver la solution la plus courte. Ajouter Order = "2" résout le problème. L'entrée correcte est: ' 1' – Cyril

Questions connexes