NSIS ExecWait和OSQL应用程序

时间:2013-01-24 16:10:26

标签: sql sql-server nsis osql

我正在编写一个安装程序,它应该执行一些MSSQL数据库操作。这些操作位于.cmd文件中,并通过MSSQL Server 2000中的OSQL.exe执行。

现在出现了我的问题。当我双击批处理文件时,它执行OK。但是,如果我通过我的安装程序中的ExecWait运行它(或者Exec,或者ExecShell,尝试了所有,没有区别),Windows说找不到命令osql ...通过SetOutPath设置的当前工作目录是我的目录.cmd文件位于。

我也尝试过这样简化案例:

sql.cmd:

osql
pause

在我的NSIS来源中,我有:

Section "Perform DB operations" SEC03
  ReadEnvStr $0 SYSTEMDRIVE
  SetOutPath "$0\DBUtils"
  SetOverwrite try
  File /r "..\source_files\DBUtils\*"
  ExecWait '"$0\DBUtils\sql.cmd"'
SectionEnd

我的问题也发生在这里。通过双击或从命令行调用.cmd它可以正常执行,但出于一些神秘的原因,NSIS的Exec似乎没有找到osql。有人知道为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:0)

你的硬盘在哪里是osql.exe?尝试修改cmd以使用绝对路径。

您可以查看安装人员看到的PATH:

ReadEnvStr $0 PATH
MessageBox MB_OK "PATH: $0"

我不确定,但是如果您的安装程序以不同的用户(管理员)身份运行,那么它可能会有不同的路径......