2009-03-26 21 views
8

Sql Server Expressがインストールされ、WiXインストーラのマシンで実行されているかどうかを検出するにはどうすればよいですか?WiXインストーラでSQL Server Expressを検出する方法

私のアプリケーションをインストールする前に、アプリケーションをインストールする前にまずアプリケーションをインストールする必要があることを知らせるために、アプリケーションをインストールする前に確認したいと思います。

答えて

11

[OK]を、私は作品試行錯誤オプションによって発見:

<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> 
+0

完璧、ちょうど同じ問題をヒットします。 最初はSQL Server StandardとExpressの両方がインストールされている場合にはうまくいかないと思っていましたが、ちょっと掘り下げた後に、 Wixドキュメントで言及されている条件式演算子についての説明がありますが、ここで見つけました:http://www.tramontana.co.hu/wix/lesson6.php。 – Bittercoder

+0

64Bits 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

関連する問題