我正在编写一个安装程序,它应该执行一些 MSSQL 数据库操作。这些操作位于 .cmd 文件中,并通过 MSSQL Server 2000 中的 OSQL.exe 执行。
现在我的问题来了。当我双击批处理文件时,它执行确定。但是,如果我在我的安装程序中通过 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。有人知道为什么会发生吗?