2010-07-16 1 views
13

NSIS 설치 프로그램 내에서 실행해야하는 배치 파일이 있습니다. 모든 파일을 압축 해제 한 후에 실행해야합니다 (분명히 가정합니다. 그렇지 않으면 배치 파일이 아직 존재하지 않을 것입니다).NSIS 설치 프로그램에서 배치 파일 실행

끝 페이지를 실행하기 위해 MUI_PAGE_CUSTOMFUNCTION_PRE를 사용하려고했지만 스크립트의 해당 부분에 도달하면 바로 건너 뛰었습니다. 아래는 어떻게 호출하는 것입니다.

;;Finish Page 
!define MUI_PAGE_CUSTOMFUNCTION_PRE Done 
!insertmacro MUI_PAGE_FINISH 

Function Done 
    ExecWait '"$INSTDIR\BatchFile" "$INSTDIR" "$DATA_FOLDER"' 
FunctionEnd 

미리 도움을 주셔서 감사합니다.

UPDATE

지금 사용하여 시도 한 다음

ExpandEnvStrings $0 %COMSPEC% 
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"' 

이 작동하지 않았다, 그래서 cmd를 프롬프트가 말한 알기 위해/C을했다 (그것을 갑자기 나타나지만 즉시 종료됩니다.) cmd.exe를 실행하는 것처럼 보이지만 그게 나머지 실행을 완료하지는 않습니다.

업데이트 # 2

작동하도록 점점 나를 이끄는 핵심 지식을 여기에서 찾을 수 있습니다 : 동의하지 않는 .bat 파일 어떤 이유를 들어

Windows batch files: .bat vs .cmd?

ExecWait. 결국

는 :

ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"' 

는 잘했다. 여기

SetOutPath $INSTDIR\${APPLICATION_DIR} 
    ExpandEnvStrings $0 %COMSPEC% 
    nsExec::ExecToStack '"C:\path-tobatch-file\commands.bat"' 

는 NSIS 위키 http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt

+0

나는 .bat fi를 실행할 수있었습니다. le, cmd 파일에 대해 위에서 게시 한 것처럼. ExecWait 대신 nsExec :: Exec을 사용하여 명령 창이 표시되지 않도록 할 수도 있습니다. – Ben

답변

7

Exec에서 [대기]에 대한 링크 적절한 필요하다 :

+1

은이 모든 것을 무시하고 내가 찾은 것을 질문합니다. – Nedloh

5

나는 이것이이 구문은 매우 성공적으로

exec를 확장을 사용했을 인용 :

ExpandEnvStrings $0 %COMSPEC% 
ExecWait '"$0" /C "c:\path\to\batch.cmd" "quoted param" normalparam "c:\last param"' 
+2

조금만 설명하면됩니다. 배치 파일은'batch_file.bat' 대신'cmd/c batch_file.bat' 명령 프로세서를 통해 실행되어야합니다. 하나는 % COMSPEC %에서'cmd'에 대한 경로를 얻을 수 있습니다. – atzz

+0

위대한 일을했지만 배치 파일을 실행하는 동안 콘솔이 표시되도록 설정하는 방법이 있습니까? 배치 파일은 엄청나게 많은 수의 파일을 복사/이동하며 사용자가 실제로는 아무 것도하지 않는다고 생각하지 않기를 바랍니다. – Nedloh

+0

출력을 표시하려면 바로 실행 파일에 Cmd 창이 표시됩니다. Exec ""$ 0 "/ C"C : \ Path-to-batch \ commands.bat " – DBQ