0

我尝试了几种方法。这是我最近的尝试,它不起作用,但应该有助于说明我想要做什么。

注意:我对 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 子元素设置它的值,我可以想象如何很容易地做到这一点。这是否可以通过一系列 CustomAction 来处理,该序列的行为类似于允许 RegistrySearch 子元素设置其值的 SetProperty 元素?

谢谢

4

1 回答 1

0

我找到了一种使用 WiX 确定 SQL Server DATA 目录路径的更简单方法。为了将来参考,这就是我解决这个问题的方法:

<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" />

希望这对其他人有帮助

于 2015-05-21T21:24:57.260 回答