2013-01-24 15 views
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를 두 번 클릭하거나 호출하면 oki가 실행되지만 NSIS의 Exec은 신비한 이유 때문에 osql을 찾지 못하는 것 같습니다. 아무도 그것이 일어날 수있는 이유를 알고 있습니까?

답변

0

여기서 하드 디스크의 osql.exe는 무엇입니까? 절대 경로를 사용하도록 cmd를 수정하십시오.

당신은 당신의 설치와 함께 보는 PATH 확인할 수 있습니다 : 잘 모르겠어요

ReadEnvStr $0 PATH 
MessageBox MB_OK "PATH: $0" 

를하지만 설치가 다른 사용자 (관리자)로 실행하면 아마 그때는 다른 경로를 가질 수있다 .. .

+0

안녕하세요! 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

+0

절대 경로로 작동합니다. 그러나 상대 경로로 작동하지 않는 이유를 발견하는 것이 좋습니다. 그런데 calc 나 wordpad와 같은 PATH에 있어야하는 Windows 실행 파일로 osql을 변경해 보았습니다. 그리고 그들은 작동합니다. – Peter

+0

답변을 업데이트했습니다. –