Comment faire pour installer les fonctionnalités en fonction de la valeur de la propriété

J'ai une clé de registre qui peut être égale à l'une des deux valeurs: valeur spéciale ou null. Et les deux fonctions.

Quand ma clé de registre est égal à valeur spéciale le programme d'installation a d'abord installer la fonctionnalité. si la clé de registre n'est pas trouvé par la recherche du registre que l'installateur doit installer deuxième long métrage. Et si la clé de registre a null valeur le programme d'installation ne doit pas installer l'une de ces deux caractéristiques.

Ce que je fais, ni la compréhension de mal? Si INSTALLLEVEL=5, SPECIALVALUE="spéciale",MYTREAT="1" la première fonction doit être installé,mais le programme d'installation ne pas installer les deux caractéristiques dans ce cas.

<Feature Id="MyFeatures" Level="1" ConfigurableDirectory='INSTALLLOCATION' Display='expand' AllowAdvertise='no'>

  <ComponentRef Id='Empty'/>

  <Feature Id='First' Level='3' AllowAdvertise='no' ConfigurableDirectory='INSTALLLOCATION'>
    <Condition Level="0">INSTALLLEVEL=4 OR (MYTREAT="1" AND NOT SPECIALVALUE AND NOT SPECIALVALUE="")</Condition>
    <Condition Level="1">SPECIALVALUE="special" AND MYTREAT="1"</Condition>
    <ComponentRef Id="first_comp"/>                 
  </Feature>

  <Feature Id="Second" Level="4" AllowAdvertise="no" ConfigurableDirectory="INSTALLLOCATION">
    <Condition Level="0">INSTALLLEVEL=3 OR (MYTREAT="1" AND SPECIALVALUE)</Condition>
    <ComponentRef Id="second_comp"/>
  </Feature>

</Feature>

J'avais modifié mon code, mais ça ne marche toujours pas droit. Problème avec des conditions. Il y a une valeur particulière dans la clé de registre, mais le programme d'installation est encore à sauter premier long métrage. J'avais trouvé cette condition avec seulement "MYTREAT=1" n'est pas de travail. Mais dans les journaux côté client est l'envoi de MYTREAT bien avec cette valeur pour le serveur.. INSTALLLEVEL est 1. MYTREAT propriété est initialisée avec bouton-poussoir de contrôle,peut-être ici est mon problème? Voici le nouveau code:

     <Feature Id="Myfeatures" Level="3"
            ConfigurableDirectory='INSTALLLOCATION'
            Display='expand' AllowAdvertise='no'>
                <Condition Level='1'>MYTREAT="1"</Condition>
                <ComponentRef Id='Empty'/>
                <Feature Id='First' Level='3' AllowAdvertise='no'
                    ConfigurableDirectory='INSTALLLOCATION'> <!--Must be installed by default,default value of INSTALLLEVEL is 3-->
                        <Condition Level="1">MYTREAT="1" AND SPECIALVALUE="SPECIAL"</Condition>
                        <ComponentRef Id="first_comp"/>                 
                </Feature>
                <Feature Id="Second" Level="10" AllowAdvertise="no"
                    ConfigurableDirectory="INSTALLLOCATION"><!---->
                            <Condition Level="1">(MYTREAT="1" AND NOT SPECIALVALUE)</Condition>
                            <ComponentRef Id="second_comp"/>                    
                </Feature>
        </Feature>

                     ............
<Dialog Id="TreatDlg" Width="260" Height="85">    
<Control Id="Mytreat" Type="PushButton" X="50" Y="57" Width="56" Height="17" Property="MYTREAT">
       <Publish Property="MYTREAT" Value="1">1</Publish>
       <Publish Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
    </Control>

P. S. j'ai initialisé MYTREAT avec 1 par défaut et l'état a été évalué correctement. Pourquoi je ne peux pas utiliser la propriété du contrôle en fonction de l'état? Et comment faire pour résoudre mon problème!Merci de toute aide!

OriginalL'auteur Nerielle | 2011-09-26