我尝试了几种方法。这是我最近的尝试,它不起作用,但应该有助于说明我想要做什么。
注意:我对 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 元素?
谢谢