2016-11-03 18 views
1

私のバンドルには、プロパティの値に基づいてフォルダ構造を作成するという2つの機能があります。ご覧のとおり、私の条件はかなりシンプルです。興味深いのは、機能ONEの条件だけが機能するのに対して、TWO(比較を行う場合)は何もしませんが、他の貼り付けられたコードと同じように必要なすべてのコンポーネントに条件を追加するとうまくいきます。これはプロパティに基づく条件付きの機能

<Property Id="NUMBER" /> 


    <Feature Id="ONE" Level="0"> 
     <Condition Level="1"> 
     <![CDATA[NOT NUMBER]]> 
     </Condition> 
     <ComponentGroupRef Id="OneStructure"/> 
    </Feature> 

    <Feature Id="TWO" Level="0"> 
     <Condition Level="1"> 
     <![CDATA[NUMBER <> ""]]> 
     </Condition> 
     <ComponentGroupRef Id="OneStructure"/> 
    </Feature> 

起こっている理由は、私が思っていた

-

   <Directory Id="dir77996843FCCE5E3734A5EDAA86FCE55B" Name="Input"> 
        <Component Id="cmp2F4C23D858A887EF0B2539F7EC1884BE" Guid="{625D2714-157F-4B21-86C0-D4954A4E1F73}" KeyPath="yes">  <Condition>  <![CDATA[NUMBER <> ""]]> </Condition> 
         <CreateFolder /> 
        </Component> 
       </Directory> 

答えて

0

は同じ問題を持っていました。どうやらそれは一度しか評価されていない状態と関係があります。

条件を機能に直接入れるのではなく、特定のダイアログ内のボタンに関するコントロールイベントに条件を設定できます。

例:

<Control Id="Install" Type="PushButton" X="304" Y="243" Width="56" Height="17" Default="yes" Text="Install"> 
    <!--Check property value here:--> 
    <Publish Event="AddLocal" Value="ALL">1</Publish> 
    <Publish Event="Remove" Value="ONE">NUMBER = 0</Publish> 
    <Publish Event="Remove" Value="TWO">NUMBER = 1</Publish> 
    <Publish Event="EndDialog" Value="Return" /> 
    </Control> 

あなたはその後、ラジオボタンでプロパティ「NUMBER」の値を変更します。

希望すると便利です。

+1

ニース代替ソリューション:D。知っておいてよかった! –

関連する問題