2010-11-26 25 views
3

Je suis nouveau à Windows Installer et Wix alors s'il vous plaît pardonner la question de débutant. J'utilise WixUI_InstallDir et j'ai ajouté une boîte de dialogue personnalisée qui affiche trois cases à cocher après LicenseAgreementDlg et avant InstallDirDlg. Existe-t-il un moyen d'afficher conditionnellement la case à cocher "Lancer l'application installée" sur ExitDialog uniquement lorsque la première case est cochée et que le programme d'installation est exécuté pour la première fois?Wix installer - conditionnellement afficher "Lancer l'application" sur ExitDialog basé sur l'entrée de dialogue personnalisé

Dans mon fichier wxs, je

<!-- Property for each checkbox value (first checkbox checked by default) --> 
<Property Id="Checkbox1" Value="1"/> 
<Property Id="Checkbox2"/> 
<Property Id="Checkbox3"/> 

<!-- Custom action to set exit dialog checkbox --> 
<CustomAction Id="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch application."/> 

<InstallUISequence> 
    <Custom Action="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" After="FindRelatedProducts">Checkbox1 = 1 and NOT Installed</Custom> 
</InstallUISequence> 

<!-- User Interface --> 
<UI> 
    <UIRef Id="WixUI_InstallDir"/> 
    <UIRef Id="WixUI_ErrorProgressText"/> 
    <DialogRef Id="MyCheckboxesDlg"/> 
    <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="MyCheckboxesDlg" Order="3">LicenseAccepted = "1"</Publish> 
    <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="MyCheckboxesDlg">1</Publish> 
</UI> 

Mon problème est que si je décocher la première case, la valeur de la propriété checkBox1 est définie à 0 après la InstallUISequence se termine si l'application de lancement dans la boîte de dialogue de sortie est toujours affiché.

Où dois-je définir la propriété, dans UISequence ou ExecuteSequence?

Répondre

1

Je pense que je l'ai compris ... juste appelé l'action personnalisée CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT lorsque le bouton Suivant dans ma boîte de dialogue personnalisée est appuyé au lieu de l'appeler dans le InstallUISequence.

<!-- NO LONGER NEEDED 
<InstallUISequence> 
    <Custom Action="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" After="FindRelatedProducts">Checkbox1 = 1 and NOT Installed</Custom> 
</InstallUISequence> 
--> 

<Fragment> 
    <UI> 
     <Dialog Id="MyCheckboxesDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes"> 
     <Control Id="ChkBox1" Type="CheckBox" X="25" Y="75" Width="200" Height="17" Property='Checkbox1' CheckBoxValue='1' > 
      <Text>First checkbox</Text> 
     </Control> 
     <Control Id="ChkBox2" Type="CheckBox" X="25" Y="95" Width="200" Height="17" Property='Checkbox2' CheckBoxValue='1'> 
      <Text>Second checkbox</Text> 
     </Control> 
     <Control Id="ChkBox3" Type="CheckBox" X="25" Y="115" Width="200" Height="17" Property='Checkbox3' CheckBoxValue='1'> 
      <Text>Third checkbox</Text> 
     </Control> 

     <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next"> 
      <Publish Event="DoAction" Value="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Order="1">Checkbox1= 1</Publish> 
      <Publish Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish> 
     </Control> 

     <!-- Other UI controls... --> 

    </Dialog> 
    </UI> 
</Fragment>