WiX中Property下多RegistrySearch元素的行为疑问
WiX多RegistrySearch绑定同一Property的赋值规则疑问解答
问题描述
此前查找过类似问题但未找到明确结论,重新表述问题如下:
假设在Property元素下定义多个RegistrySearch元素,代码示例如下:
<Property Id="MyProp"> <RegistrySearch Id="Reg1" Root="HKLM" Key="SomePath1" Name="Reg1Name" Type="raw" /> <RegistrySearch Id="Reg2" Root="HKLM" Key="SomePath2" Name="Reg2Name" Type="raw" /> <RegistrySearch Id="Reg3" Root="HKLM" Key="SomePath3" Name="Reg3Name" Type="raw" /> </Property>
已知这些搜索的执行顺序无法保证,后得到结果的搜索会覆盖MyProp的赋值。疑问是:若其中某个搜索成功赋值给MyProp,最后一个搜索未找到结果,此时MyProp会被设为NULL还是保留之前的有效值?
解答
当多个RegistrySearch绑定到同一个Property时,只有成功检索到有效值的搜索才会覆盖Property的当前值。如果某条RegistrySearch未找到对应注册表项(返回空值),它不会对已经存在有效值的Property进行修改。
也就是说,如果前面的搜索已经给MyProp赋了有效值,哪怕最后一个搜索未找到结果,MyProp会保留之前的有效值,不会被设为NULL。
内容的提问来源于stack exchange,提问作者Tiger Galo
相关产品推荐
相关产品推荐

