Как обнаружить SQL Server Express в установщике WiX - PullRequest
9 голосов
/ 26 марта 2009

Как определить, установлен ли Sql Server Express и работает ли он на компьютере в установщике WiX?

Я хочу проверить перед установкой моего приложения и, если оно не установлено и не запущено, сообщить пользователю, что его необходимо установить перед установкой моего приложения.

Ответы [ 3 ]

11 голосов
/ 26 марта 2009

Хорошо, я нашел метод проб и ошибок, который работает:

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

Я определяю поиск в реестре, а затем проверяю его значение:

<Condition Message="You don't have SQL Server installed.">
  <![CDATA[SQLSERVER >< SQLEXPRESS]]>
</Condition>
6 голосов
/ 12 ноября 2009

Я попробовал решение Кшиштофа (см. Выше) - но на некоторых машинах при использовании этого подхода неправильно определялось, когда у не установлен 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>

Немного хак, но, похоже, работает достаточно хорошо для наших клиентов (они использовали условия внутри компонентов, а не пример условий запуска, показанный выше)

1 голос
/ 11 июля 2012

Принятый ответ выше всегда проходил условие для меня. Я получил его с помощью:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...