如何:在执行安装时读注册表键值
如何:在执行安装时读注册表键值
安装包在进行安装时常常需要查找注册表键值。搜索注册表的结果通常被用在稍后的条件语句中,例如,如果没有找到指定的注册表键值则安装特定的Component。本例演示了如何从注册表读取一个整形的值并且在启动条件中验证是否存在。
第一步:读取注册表键值到Property中
注册表键值是通过<RegistrySearch>元素来读取的。下面的片段用来搜索一个代表目标机器上是否安装有.NET Framework 2.0的键值*。
<Property Id="NETFRAMEWORK20"> <RegistrySearch Id="NetFramework20" Root="HKLM" Key="Software\Microsoft\NET Framework Setup\NDP\v2.0.50727" Name="Install" Type="raw" /> </Property>
为RegistrySearch元素指定一个唯一的ID,Root为要搜索的注册表的根节点,Key为根节点下需要搜索的键值位置。Name属性指定需要查询的键值,Type属性指出如何处理该值(整型、字符串等等)。 raw是说明该值需要根据值的类型来追加前缀(Raw indicates that the value should be prefixed according to the data type of the value)。本例中,Install为DWORD类型,所以值的前面会被追加一个#。
上面的例子中,当找到注册表键值的时候,ID为NETFRAMEWORK20的Property会被设置为“#1”,反之则不会设置。
第二步:在Condition中使用Property
Property设置好之后就可以在WiX工程文件的Condition中使用了。下面的片段演示了根据它判断NET Framework 2.0是否安装进而决定是否中断安装。
<Condition Message="This application requires .NET Framework 2.0. Please install the .NET Framework then run this installer again."> <![CDATA[Installed OR NETFRAMEWORK20]]> </Condition>
Installed 是一个Windows Installer 预定义Property,其作用是确保该检测只在安装的时候做,修复或者删除的时候则不做。当NETFRAMEWORK20部分有值的时候检测将通过。如果没有值则将显示错误信息并且取消安装进程。
* 这个注册表键值仅仅用做演示。如果你希望检测.NET Framework的安装版本可以使用WiX内置方法/变量。更多信息请看如何:检查.NET Framework版本。
浙公网安备 33010602011771号