我正在编写一个安装程序,它应该执行一些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。有人知道为什么会发生这种情况吗?
答案 0 :(得分:0)
你的硬盘在哪里是osql.exe?尝试修改cmd以使用绝对路径。
您可以查看安装人员看到的PATH:
ReadEnvStr $0 PATH
MessageBox MB_OK "PATH: $0"
我不确定,但是如果您的安装程序以不同的用户(管理员)身份运行,那么它可能会有不同的路径......