私はいくつかのMSSQLデータベース操作を実行する必要があるインストーラーを書いています。これらの操作は.cmdファイルにあり、MSSQLServer2000の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を見つけられないようです。なぜそれが起こり得るのか誰かが知っていますか?