2016-04-19 11 views
0

コンポーネントの状態を説明している他の記事では、機能の状態に基づいて評価されていませんが、私の質問ははるかに簡単です。Wixコンポーネントの条件が期待どおりに機能しない

次のことを考える:

<Property Id="WORDISINSTALLED" Secure="yes"> 
    <RegistrySearch Id="FindWordIsInstalled" Root="HKCR" Key="Word.Application" Type="raw" Win64="$(var.Win64)"/> 
</Property> 

<Property Id="WORDVERSION" Secure="yes"> 
    <RegistrySearch Id="WordVersion" Root="HKCR" Key="Word.Application\CurVer" Type="raw"/> 
</Property> 

<SetProperty Id="MIN_WORD_VERSION_INSTALLED" After ="AppSearch" Value="1"> 
    <![CDATA[WORDVERSION <> "Word.Application.11" AND WORDVERSION <> "Word.Application.12" AND WORDISINSTALLED]]> 
</SetProperty> 

私はこれを行うことができるはず:MIN_WORD_VERSION_INSTALLEDが非NULLかつTRUEである場合、コンポーネントvar.SOFFWordAddinReg_Idにのみインストールされることを期待して

<Component Id="$(var.SOFFWordAddinReg_Id)" DiskId="1" Guid="$(var.SOFFWordAddinReg_Guid)" Win64="$(var.Win64)"> 
    <Condition>MIN_WORD_VERSION_INSTALLED</Condition> 
     <RegistryValue Root="HKLM" Key="Software\Microsoft\Office\Word\AddIns" Name="Description" Value="yada" Type="string" Action="write"/> 
    </Component> 

を。

私はWORDISINSTALLEDは、「Microsoft Wordのアプリケーション」に設定されているとWORDVERSIONが(AppSearch中)に「Word.Application.14」に設定されていますが、MIN_WORD_VERSION_INSTALLEDが設定されていないログから見る

アクションをスキップ:SetMIN_WORD_VERSION_INSTALLED .FA651678_2CA2_423F_9FE0_FE10237B33F6

ログも成分 コンポーネントを示す(条件が偽である):SOFFWordAddinReg.7D199B30_06E3_488C_9EDF_4B8188026E9Cと、インストール済み:不在。リクエスト:ローカル。処置:NULL。クライアントの状態:不明

ただし、その理由はわかりません。 (私は条件のために仮定する)

私は何かをしなければならない非常に基本的が間違っています。どんな助けでも大歓迎です。

答えて

0

ブール演算子の優先順位は、< =比較演算子であるため、ブール式では括弧を使用する必要があります。次のようになります。

"Word.Application.11")AND(WORDVERSION <> "Word.Application.12")AND(WORDISINSTALLED)]]>

関連する問題