您可以使用多个注册表搜索设置变量吗?

时间:2014-10-02 17:37:18

标签: .net wix windows-installer bootstrapper burn

当WiX引导程序使用许多RegistrySearch-es设置相同的变量时,例如:

<util:RegistrySearch Id='NETFRAMEWORK35_SP_LEVELSearch' Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" Value="SP" Variable="NETFRAMEWORK35_SP_LEVEL" />
<util:RegistrySearch Id='NETFRAMEWORK35_SP_LEVELSearchWin64' Root="HKLM" Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" Value="SP" Variable="NETFRAMEWORK35_SP_LEVEL" Win64="yes" />
<util:RegistrySearch Id='NETFRAMEWORK35_SP_LEVELSearchWow64' Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5" Value="SP" Variable="NETFRAMEWORK35_SP_LEVEL" />
<util:RegistrySearch Id='NETFRAMEWORK35_SP_LEVELSearchWin64Wow64' Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5" Value="SP" Variable="NETFRAMEWORK35_SP_LEVEL" Win64="yes" />
<Chain>
    ...
    <ExePackage ... InstallCondition="NOT NETFRAMEWORK35_SP_LEVEL"/>
    ...
</Chain>

如果一次搜索成功但后一次搜索失败,则会重置该变量。例如:

...
Setting string variable 'NETFRAMEWORK35_SP_LEVEL' to value '1'
Setting string variable 'NETFRAMEWORK35_SP_LEVEL' to value '1'
Registry key not found. Key = 'SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5'
Registry key not found. Key = 'SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5'
...
Condition 'NOT NETFRAMEWORK35_SP_LEVEL' evaluates to true. <--- FALSE EXPECTED!!!

如果我使用单个搜索,那么成功的搜索,例如,它将按预期评估NOT NETFRAMEWORK35_SP_LEVEL为false!但是,如何使用多个RegistrySearch-es来设置单个变量,或者我必须为每次搜索使用多个变量?

编辑:通常情况下,WiX MSI属性允许这样做,这就是为什么在WiX引导程序项目或刻录引擎中看不到对它的支持是如此令人费解。

0 个答案:

没有答案
相关问题