我有一个WIX安装程序包,其中包含QuickTime作为先决条件。我试图检查一个注册表项,以确定它是否已安装,但它总是返回false。
日志显示......
[08B4:040C] [2015-07-06T10:50:14] i000:找不到注册表项。键=' HKEY_LOCAL_MACHINE \ SOFTWARE \ Clients \ Media \ QuickTime' [08B4:040C] [2015-07-06T10:50:14] i000:设置数字变量' QuickTimeFound64'值为0 [08B4:040C] [2015-07-06T10:50:14] i000:找不到注册表项。键=' HKEY_LOCAL_MACHINE \ SOFTWARE \ Clients \ Media \ QuickTime'
注册表是......
代码是......
<util:RegistrySearch Root="HKLM" Key="HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Media\QuickTime" Result="exists" Variable="QuickTimeFound64" Win64="yes" />
<util:RegistrySearch Root="HKLM" Key="HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Media\QuickTime" Result="exists" Variable="QuickTimeFound32" Win64="no" />
<Chain>
<PackageGroupRef Id="PackageGroup_NetFx35Redist"/>
<PackageGroupRef Id="PackageGroup_NetFx40Redist"/>
<PackageGroupRef Id="PackageGroup_SQLServer2012"/>
<ExePackage Id="Package_QuickTime" Cache="no" Compressed="$(var.Compressed)"
Description="Apple QuickTime 7" DownloadUrl="$(var.GuruDownloadRepo)/{2}"
SourceFile="..\Prerequisites\QuickTimeInstaller.exe"
Name="Prerequisites\QuickTimeInstaller.exe"
Permanent="yes" DisplayName="Apple QuickTime 7"
DetectCondition="QuickTimeFound64 AND QuickTimeFound32" />
我试过包括&#34; Wow6432Node&#34;在64位路径,但它没有任何区别。
有谁可以告诉我为什么这两个搜索都会回复为假?
答案 0 :(得分:2)
使用
SOFTWARE\Clients\Media\QuickTime
而不是
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Media\QuickTime
因为在Root
属性中指定了HKEY_LOCAL_MACHINE。