2015-05-21 33 views
0

我試圖用幾種方法做到這一點。這是我最近的嘗試,但不起作用,但應該幫助說明我想要做的事情。WiX工具集 - 如何確定SQL Server數據路徑

注意:我對GetSQLServerInstalledInstance Id的假設是它將返回一個實例。

我的目標是找到安裝在我的公司產品上的計算機上安裝的SQL Server實例的DATA目錄路徑。

<util:RegistrySearch Id='GetSQLServerInstalledInstance' 
    Variable='SQL_SERVER_INSTALLED_INSTANCE' 
    Root='HKLM' 
    Key='SOFTWARE\Microsoft\Microsoft SQL Server' 
    Value="InstalledInstances" 
    Format="raw" /> 
<util:RegistrySearch Id='GetSQLServerInstalledInstanceName' 
    Variable='SQL_SERVER_INSTALLED_INSTANCE_NAME' 
    Root='HKLM' 
    Key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL' 
    Value="[SQL_SERVER_INSTALLED_INSTANCE]" 
    Format="raw" 
    After="GetSQLServerInstalledInstance" /> 
<util:RegistrySearch Id='GetSQLServerInstallPath' 
    Variable='SQL_SERVER_INSTALL_PATH' 
    Root='HKLM' 
    Key='SOFTWARE\Microsoft\Microsoft SQL Server\[SQL_SERVER_INSTALLED_INSTANCE_NAME]\Setup' 
    Value="SQLPath" 
    Format="raw" 
    After="GetSQLServerInstalledInstanceName" /> 
<SetProperty Id='SQL_SERVER_FILE_PATH' Value="[SQL_SERVER_INSTALL_PATH]\DATA" After="CostFinalize" Sequence="first" /> 

最後,我正在尋找包含此路徑的SQL_SERVER_FILE_PATH屬性。 (例如C:\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA)

調用的順序也是很重要的,因爲隨後的調用可以包含從先前調用派生的信息。

對於WiX我還是比較新的,但是我可以想象如果SetProperty元素允許RegistrySearch子元素設置它的值,該如何很容易地做到這一點。這可以通過一系列的自定義操作來處理,這些自動操作的行爲類似於允許RegistrySearch子元素設置其值的SetProperty元素?

感謝

回答

0

我發現用於使用WiX的SQL Server數據目錄的路徑更簡單的方法。對於未來的參考,這是我如何解決了這個:

<Property Id='SQL_SERVER_INSTALL_PATH'> 
    <RegistrySearch Id='GetSQLServerInstallPath' Root='HKLM' 
        Key='SOFTWARE\Microsoft\MSSQLServer\Setup' 
        Name='SQLPath' Type='directory' Win64="yes" /> 
</Property> 
<SetProperty Id='SQL_SERVER_DATA_PATH' Value="[SQL_SERVER_INSTALL_PATH]DATA" After="CostFinalize" Sequence="first" /> 

希望這有助於他人