일부 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를 두 번 클릭하거나 호출하면 oki가 실행되지만 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가 내 프로그램에서 직접 DB 작업을 수행하지 않지만 타사 구성 요소에 속하는 것입니다. 따라서 타사에서 제공 한 .cmd 파일을 변경하지 않고 그대로 두는 것이 좋습니다. – Peter
절대 경로로 작동합니다. 그러나 상대 경로로 작동하지 않는 이유를 발견하는 것이 좋습니다. 그런데 calc 나 wordpad와 같은 PATH에 있어야하는 Windows 실행 파일로 osql을 변경해 보았습니다. 그리고 그들은 작동합니다. – Peter
답변을 업데이트했습니다. –