我尝试动态确定SQL工具 SQLCMD.exe 的路径,以便在安装程序时创建数据库的备份。
我已尝试通过
搜索注册表Width="60"
它适用于我的机器,但我最终在使用旧版MS SQL的系统上遇到错误。例如。 exe在subdir 110 而不是 130 。
使用
搜索环境路径<Property Id="SQLBINDIR">
<RegistrySearch Id="SQLServerReg" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\130\Tools\ClientSetup" Name="ODBCToolsPath" Type="raw" />
</Property>
返回我的所有路径,而不仅仅是所需的SQL路径。
我需要正确的路径才能运行
<SetProperty Id="SQLBINDIR" Value="[%Path]" After="LaunchConditions" Sequence="first" />
答案 0 :(得分:0)
我通过添加this article中描述的C#自定义操作解决了这个问题。在那里,我用Environment.GetEnvironmentVariable("path");
提取所有路径变量,并对所有SQL路径进行文件搜索,最后设置session["SQLBINDIR"] = foundFilePath;