执行SQLcmd,然后将查询结果作为变量返回给NSIS

执行SQLcmd,然后将查询结果作为变量返回给NSIS,nsis,sqlcmd,Nsis,Sqlcmd,我正在创建一个NSIS安装程序,需要获取用户安装的SQL server版本 用户将给我实例名称,以便我可以连接到该框。然后运行这个sql查询,选择SERVERPROPERTY('ProductMajorVersion')并获取主要版本号 但是当我尝试从NSIS执行时,我没有成功,因为它在执行查询时出错,所以我没有从控制台窗口获得结果 以下是我在NSIS文件中的内容: nsExec::ExecToStack "'sqlcmd -S $SQL_Instance_Name -E -h-1 -Q $\"

我正在创建一个NSIS安装程序,需要获取用户安装的SQL server版本

用户将给我实例名称,以便我可以连接到该框。然后运行这个sql查询,选择SERVERPROPERTY('ProductMajorVersion')并获取主要版本号

但是当我尝试从NSIS执行时,我没有成功,因为它在执行查询时出错,所以我没有从控制台窗口获得结果

以下是我在NSIS文件中的内容:

nsExec::ExecToStack "'sqlcmd -S $SQL_Instance_Name -E -h-1 -Q $\"SET NOCOUNT ON; select SERVERPROPERTY ($\'ProductMajorVersion$\')$\"'"

    Pop $0
    Pop $1
我也尝试过:

ExecCmd::Exec  "'sqlcmd -S $SQL_Instance_Name -E -h-1 -Q $\"SET NOCOUNT ON; 
select SERVERPROPERTY ($\'ProductMajorVersion$\')$\"'"

    Pop $0
    Pop $1
但我只是没有得到我想要的结果,任何建议或建议都将不胜感激

或者,如果有更简单、更快捷的方法从注册表获取此信息,也可以

短暂性脑缺血发作
Andy

应用程序应使用完整路径指定,并且需要:

为确保在所有windows版本上执行命令时不会出现问题, 建议使用以下语法:

nsExec::ExecToStack[OPTIONS]““PATH”param1 param2 paramN”


嗨,安德斯,非常感谢你的回复,我知道我做错了什么,现在它工作了,再次感谢。只是出于个人学习,为什么我的问题是a-1,我做错了什么?你知道吗?这就是为什么会这样,有人出于任何原因不喜欢你的问题,并投了反对票。你没有做错什么,但我也发现你的问题有点欠缺,因此我的答案只是猜测。理想情况下,你也应该发布$0和$1的内容,如果你这样做了,并且上面写着“错误”,那么事情就更容易诊断了……嗨,安德斯,我很感激反馈会努力让未来的问题更清楚,从第一个谷歌结果中得到+1。该问题概述了问题以及尝试了什么(并且代码的格式设置正确!)对于在没有任何明确(建设性)批评的情况下投了否决票的用户感到羞耻。
Section
StrCpy $0 "-S $SQL_Instance_Name ....." ; Putting the parameters here makes them easier to debug etc
MessageBox mb_ok $0 ; Use this to make sure the parameters look correct
nsExec::ExecToStack '"c:\path\to\sqlcmd.exe" $0'
Pop $0
Pop $1
DetailPrint $0,$1 ; $0 will be "error" if nsExec cannot start the application
SectionEnd