2009-03-26 5 views
8

SQL Server Express가 설치되어 있고 WiX 설치 프로그램의 컴퓨터에서 실행되고 있는지 어떻게 감지합니까?WiX 설치 프로그램에서 SQL Server Express를 검색하는 방법

내 응용 프로그램을 설치하기 전에 확인하고 설치되지 않은 경우 응용 프로그램을 설치하기 전에 먼저 설치해야한다는 것을 사용자에게 알리고 싶습니다.

<Property Id="SQLSERVER"> 
    <RegistrySearch Id="SQLServer" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft Sql Server" Type="raw" Name="InstalledInstances"/> 
</Property> 

내가 레지스트리 검색을 정의하고 그 값 확인 :

답변

11

좋아, 작품 시행 착오 옵션에 의해 발견 나는 르지의 솔루션 (위) 시도

<Condition Message="You don't have SQL Server installed."> 
    <![CDATA[SQLSERVER >< SQLEXPRESS]]> 
</Condition> 
+0

완벽하고, 똑같은 문제를 치고. 처음에는 SQL Server Standard와 Express를 둘 다 설치 한 경우에는 작동하지 않을 것이라고 생각했으나 조금 파고 들었을 때 뜻하지 않게 남아있는 수단을 발견했습니다. Wix 문서에 언급 된 조건부 표현 연산자에 대한 언급을 찾아 보시고 여기에서 찾으 셨습니다 : http://www.tramontana.co.hu/wix/lesson6.php. – Bittercoder

+0

64Bit Windows 버전에서 InstalledInstance 값을 찾을 수 없습니다. – jmayor

+0

당신은 HKLM \ SOFT .. \ MSFT 대신에 Wow6432Node로 변경해야합니다. – jmayor

5

을 - 그러나이 방법을 사용할 때 일부 컴퓨터에서는 이 아닌에 Sql Express가 설치되어있을 때 올바르게 감지하지 못했습니다.

REG_MULTI_SZ InstalledInstances 레지스트리 값이 잘못 처리 된 것으로 보입니다.

설치 프로그램에서 Sql Server Express 서비스를 중지/다시 시작해야하는지 확인 했으므로 이제 대신 해당 서비스를 확인하기로 결정했습니다. 대신 여기에 대체 서비스가 있는지 확인하기로했습니다.

<Property Id="SQLEXPRESSINSTALLED" > 
    <RegistrySearch Id="IsSqlExpressServiceInstalled" Root="HKLM" Key="SYSTEM\CurrentControlSet\services\MSSQL$SQLEXPRESS" Name="Description" Type="raw" Win64="no"/> 
</Property>  

<Condition Message="Express Not Installed">SQLEXPRESSINSTALLED</Condition> 

<Condition Message="Express Installed">NOT SQLEXPRESSINSTALLED</Condition> 

해킹의 비트,하지만 항상 조건을 통과했다

0

허용 대답 위 (구성 요소 내에서 위보다는 예제 실행 조건을 조건을 사용했다) 우리의 고객을 위해 충분히 잘 작동하는 것 같다 나를 위해. 나는 그것을 사용하고있어 :

<Property Id="SQLSERVER_INSTANCE"> 
    <RegistrySearch Id="SQLServerRegSearch" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft Sql Server\Instance Names\SQL" Type="raw" Name="SQLEXPRESS"/> 
</Property> 
<Condition Message="You don't have SQL Server installed."> 
    <![CDATA[SQLSERVER_INSTANCE]]> 
</Condition> 
+0

모든 답변은 SQL Express 인스턴스가 'SQLEXPRESS'라는 인스턴스 이름으로 설치된다는 동일한 가정을하는 것처럼 보입니다. 기본값은 *이지만 변경 가능합니다. –

+0

사실입니다. 따라서 SQLEXPRESS 대신 필요한 인스턴스 이름을 확인해야합니다. – patrickbadley

관련 문제