执行 SQLcmd 然后 return 查询结果作为 NSIS 的变量
Execute SQLcmd and then return query result as variable to NSIS
我正在创建一个 NSIS 安装程序,我需要获取用户安装的 SQL 服务器的版本。
用户会给我实例名,这样我就可以连接到盒子了。然后我 运行 这个 sql 查询 select SERVERPROPERTY ('ProductMajorVersion') 并得到主版本号。
但是当我尝试从 NSIS 执行时,我没有成功,因为它在执行查询时出错,所以我没有从控制台获得结果 window。
以下是我的 NSIS 文件中的内容:
nsExec::ExecToStack "'sqlcmd -S $SQL_Instance_Name -E -h-1 -Q $\"SET NOCOUNT ON; select SERVERPROPERTY ($\'ProductMajorVersion$\')$\"'"
Pop [=11=]
Pop
我也试过:
ExecCmd::Exec "'sqlcmd -S $SQL_Instance_Name -E -h-1 -Q $\"SET NOCOUNT ON;
select SERVERPROPERTY ($\'ProductMajorVersion$\')$\"'"
Pop [=12=]
Pop
但我只是没有得到我想要的结果任何意见或建议将不胜感激。
或者,如果有更简单快捷的方法从注册表中获取此信息,那也很好。
TIA
安迪
应指定应用程序的完整路径,并且需要 quoted with a double quotes:
To ensure that command are executed without problems on all windows versions,
is recommended to use the following syntax:
nsExec::ExecToStack [OPTIONS] '"PATH" param1 param2 paramN'
Section
StrCpy [=10=] "-S $SQL_Instance_Name ....." ; Putting the parameters here makes them easier to debug etc
MessageBox mb_ok [=10=] ; Use this to make sure the parameters look correct
nsExec::ExecToStack '"c:\path\to\sqlcmd.exe" [=10=]'
Pop [=10=]
Pop
DetailPrint [=10=], ; [=10=] will be "error" if nsExec cannot start the application
SectionEnd
我正在创建一个 NSIS 安装程序,我需要获取用户安装的 SQL 服务器的版本。
用户会给我实例名,这样我就可以连接到盒子了。然后我 运行 这个 sql 查询 select SERVERPROPERTY ('ProductMajorVersion') 并得到主版本号。
但是当我尝试从 NSIS 执行时,我没有成功,因为它在执行查询时出错,所以我没有从控制台获得结果 window。
以下是我的 NSIS 文件中的内容:
nsExec::ExecToStack "'sqlcmd -S $SQL_Instance_Name -E -h-1 -Q $\"SET NOCOUNT ON; select SERVERPROPERTY ($\'ProductMajorVersion$\')$\"'"
Pop [=11=]
Pop
我也试过:
ExecCmd::Exec "'sqlcmd -S $SQL_Instance_Name -E -h-1 -Q $\"SET NOCOUNT ON;
select SERVERPROPERTY ($\'ProductMajorVersion$\')$\"'"
Pop [=12=]
Pop
但我只是没有得到我想要的结果任何意见或建议将不胜感激。
或者,如果有更简单快捷的方法从注册表中获取此信息,那也很好。
TIA 安迪
应指定应用程序的完整路径,并且需要 quoted with a double quotes:
To ensure that command are executed without problems on all windows versions, is recommended to use the following syntax:
nsExec::ExecToStack [OPTIONS] '"PATH" param1 param2 paramN'
Section
StrCpy [=10=] "-S $SQL_Instance_Name ....." ; Putting the parameters here makes them easier to debug etc
MessageBox mb_ok [=10=] ; Use this to make sure the parameters look correct
nsExec::ExecToStack '"c:\path\to\sqlcmd.exe" [=10=]'
Pop [=10=]
Pop
DetailPrint [=10=], ; [=10=] will be "error" if nsExec cannot start the application
SectionEnd