2013-05-07 112 views
2

SQL Server 2008 R2是我的一個安裝程序先決條件。我知道我們需要使用RegistrySearch來檢查註冊表項以檢測SQL Server。我已經通過網絡搜索,但我對很多註冊表項感到困惑。我已經在SQL Server 2008 R2安裝的機器上自己檢查了一下,發現下面的註冊表項。任何人都可以讓我知道哪一個是正確的入口檢查?是否有任何其他標準註冊表項來檢測SQL服務器?從WIX中檢測SQL Server 2008 R2

CURRENTVERSION值爲10.5

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server Redist\SQLBrowser\1033\CurrentVersion 

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server Redist\SQLBrowser\CurrentVersion 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server 2008 Redist\SQLNCLI10\1033\CurrentVersion 

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup\CurrentVersion 

回答

3

目前我以下搜索來檢查安裝的是什麼。前兩個告訴我,SqlServer安裝在任何版本。第二個告訴我是否是Sql 2008R2。然後,我可以使用這些來決定是否進行全新安裝或升級現有實例(我還沒有測試過這是否適用於Sql2012安裝,我懷疑它會起作用,因爲我不指望您可以「升級」 Sql2012到Sql2008R2):

<util:RegistrySearch Root="HKLM" 
        Key="SYSTEM\CurrentControlSet\services\MSSQL$[SqlInstance]" 
        Result="exists" 
        Variable="SQLServerInstalled" /> 

<util:RegistrySearch Root="HKLM" 
        Key="SYSTEM\CurrentControlSet\services\MSSQLSERVER" 
        Result="exists" 
        Variable="DefaultSQLServerInstalled" /> 

<util:RegistrySearch Root="HKLM" 
        Key="SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.[SqlInstance]" 
        Result="exists" 
        Variable="SQLServer2008R2Installed" /> 

<util:RegistrySearch Root="HKLM" 
        Key="SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER" 
        Result="exists" 
        Variable="DefaultSQLServer2008R2Installed" /> 
+0

感謝您的答案@caveman_dick。如果安裝了多個SQL Server實例,如何獲取SqlInstance。 – Vinoth 2013-05-08 11:31:29

+0

這就是我發現的困難。有一個註冊表項列出了這些實例,但Wix 3.6無法導入它們存儲在其中的REG_MULTI。但不確定這是否已在3.7中修復。 – 2013-05-08 12:41:03

+0

我正在使用C#自定義操作並完成此操作。現在它工作正常。再次感謝。 – Vinoth 2013-05-09 10:40:59