2014-11-11 2 views
0

나는 다음 내 윅스 번들의 명령이 있습니다RegistrySearch 레지스트리에있는 값에 true를 반환하지 않습니다

<Variable Name="InstanceName" Value= "SQLExpress" /> 

    <util:RegistrySearch Id="SqlInstanceKeyFound" Root="HKLM" 
     Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" 
     Value ="[InstanceName]" Result="exists" Variable="SqlInstanceKeyFound" /> 

내가 기계에 Regedit를의 SQL Server Express 인스턴스를 볼 수 있지만 내 로그를 파일이 내게 다시보고하고 있습니다 :

Registry key not found. Key = 'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL' 
Setting numeric variable 'SqlInstanceKeyFound' to value 0 
Condition 'SqlInstanceKeyFound' evaluates to false. 

Regedit에서 값을 볼 수있는 이유는 무엇입니까? 조금 더 많은 정보를 추가하기 위해 이것은 SQL Express 2014 인스턴스에 대한 검사로되어 있습니다.

답변

2

<util:RegistrySearch>은 기본적으로 32 비트 레지스트리를 검색합니다. 64 비트 레지스트리를 검색하려면 Win64="yes"을 설정하십시오.

+1

64 플래그를 설정하면 64 비트를 검색하거나 아니면 64 비트를 검색합니까? – PlTaylor

+0

64 비트이므로 SQL의 두 가지 맛을 모두 지원하려면 두 개의 util : RegistrySearches가 필요합니다. –

0

WiX 구문 때문에 짜증이납니다. RegistrySearch의 접두사를 util 네임 스페이스로 붙이면 어떻게됩니까?

또한 s.th를 찾을 수 없습니다. ResultVariable의 줄에있는 WiX documentation? 레지스트리 검색이 Property 요소의 하위가 아니어야합니까?

. 예를 들어 Property value set in WiX based on registry key value의 대답입니다.

+1

유틸리티에서 레지스트리 검색을 사용하고 있습니다. http://wixtoolset.org/documentation/manual/v3/xsd/util/registrysearch.html – PlTaylor

+1

MSI 파일이 아닌 번들로 검색합니다. – PhilDW

관련 문제