我已经看到其他帖子描述了基于功能状态未被唤醒的组件条件,但我的问题要简单得多。
鉴于以下内容:
<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>
我应该可以这样做:
<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>
期望只有在MIN_WORD_VERSION_INSTALLED为非null且为TRUE时才会安装组件var.SOFFWordAddinReg_Id。
我从日志中看到WORDISINSTALLED设置为&#34; Microsoft Word Application&#34;和WORDVERSION设置为&#34; Word.Application.14&#34; (在AppSearch中),但未设置MIN_WORD_VERSION_INSTALLED:
跳过操作:SetMIN_WORD_VERSION_INSTALLED.FA651678_2CA2_423F_9FE0_FE10237B33F6(条件为假)
日志还显示组件 组件:SOFFWordAddinReg.7D199B30_06E3_488C_9EDF_4B8188026E9C;安装:缺席;要求:本地;行动:空虚;客户状态:未知
但不要说为什么。 (我假设因为条件?)
我必须做一些非常基本错误的事情。非常感谢任何帮助。
答案 0 :(得分:0)
布尔表达式应该使用parens,因为布尔运算符的优先级是&lt; =比较运算符,例如。应该是:
&#34; Word.Application.11&#34;)AND(WORDVERSION&lt;&gt;&#34; Word.Application.12&#34;)AND(WORDISINSTALLED)]]&gt;