Как установить функции в зависимости от значения свойства

У меня есть раздел реестра, который может иметь одно из двух значений: специальное значение или null . И две особенности.

Когда в моем разделе реестра указано специальное значение , программа установки должна установить первую функцию. Если раздел реестра не найден поиском в реестре, установщик должен установить вторую функцию. И если раздел реестра имеет значение null , программа установки не должна устанавливать ни одну из этих двух функций.

Что я делаю или понимаю неправильно? Если INSTALLLEVEL = 5, SPECIALVALUE = "special", MYTREAT = "1", должна быть установлена ​​первая функция, но в этом случае программа установки не устанавливает обе функции.

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

Я изменил свой код, но он по-прежнему не работает. Проблема с условиями. В разделе реестра есть специальное значение, но программа установки по-прежнему пропускает первую функцию. Я обнаружил, что условие с «MYTREAT = 1» не работает. Но в журналах клиентская сторона отправляет на сервер свойство MYTREAT с этим значением. INSTALLLEVEL - 1. Свойство MYTREAT инициализируется с помощью кнопки управления, может быть здесь моя проблема? Вот новый код:

     <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. Я инициализировал MYTREAT с помощью 1 по умолчанию, и условие было оценено правильно. Почему я не могу использовать свойство элемента управления в состоянии функции? И как решить мою проблему! Пожалуйста, помогите!

6
задан Nerielle 27 September 2011 в 08:54
поделиться