0
我正在編寫一個應該執行一些MSSQL數據庫操作的安裝程序。這些操作位於.cmd文件中,並通過MSSQL Server 2000中的OSQL.exe執行。NSIS ExecWait和OSQL應用程序
現在出現了我的問題。當我雙擊批處理文件時,它將執行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。有人有一個想法,爲什麼會發生?
嗨!它位於C:\ Program Files \ Microsoft SQL Server \ 80 \ Tools \ Binn \ OSQL.exe中,C:\ Program Files \ Microsoft SQL Server \ 80 \ Tools \ Binn \包含在PATH環境變量中。我一定會嘗試把一切都改變成絕對路徑。但是,問題在於.cmd不直接爲我的程序執行數據庫操作,而是屬於第三方組件。因此,我寧願讓第三方提供的.cmd文件保持不變。 – Peter
它使用絕對路徑。但是,發現爲什麼它不能用相對路徑工作會很好。順便說一下,我試圖將osql更改爲一些應該位於PATH中的Windows可執行文件,例如calc或writepad,並且它們可以工作。 – Peter
我更新了答案 –