2016-08-05 1 views
1

NSIS 설치 프로그램에서 특정 매개 변수를 사용하여 배치 파일을 실행하는 데 문제가 있습니다.NSIS 설치 프로그램에서 배치 파일을 실행할 때의 문제

나는 내가 사용하고 Executing Batch File in NSIS installer

명령에 언급 된 지침입니다 따랐다

SetOutPath "64 bitRegistration \ $ INSTDIR"

ExpandEnvStrings $ 0 % COMSPEC %의

ExecWait ' "$ 0" "$ INSTDIR \ 64 비트 등록 \ EIQServersRegistration.cmd" "$ INSTDIR \ Param1" "$ INSTDIR \ Param2" "$ INSTDIR \ Param3" "$ I NSTDIR \ Param4 ""$ INSTDIR \ Param5 " '

.bat 대신 .cmd를 사용합니다. ExecWait에 대한 매개 변수를 인용했습니다.

내가 직면 한 것은 명령 프롬프트를 열고 아무 것도하지 않는다는 것입니다. 명령 프롬프트에서 배치 파일을 가져 오지 않고 배치 파일을 실행하지 않습니다.

내가 누락 된 부분을 누군가가 지적 할 수 있습니까?

답변

1

% COMSPEC %를 사용하면/C를 매개 변수 앞에 추가하여 나머지 명령 줄을 실행하겠다고 cmd.exe에 알릴 필요가 있습니다. 이것은 cmd.exe가 if 1==1 해킹으로 해제해야하는 어리석은 인용 처리가 있기 때문에이 이야기의 절반에 불과합니다.

Section 
; Create test batch file: 
InitPluginsDir 
StrCpy $InstDir $PluginsDir 
CreateDirectory "$INSTDIR\64-bitRegistration" 
FileOpen $0 "$INSTDIR\64-bitRegistration\EIQServersRegistration.cmd" w 
FileWrite $0 '@echo off$\n' 
FileWrite $0 'Title Test batch %*$\n' 
FileWrite $0 'dir /S/B %windir%\*shell32*$\n' ; Some long running command 
FileClose $0 

; Run it: 
ExpandEnvStrings $0 %COMSPEC% 
ExecWait '"$0" /C if 1==1 "$INSTDIR\64-bitRegistration\EIQServersRegistration.cmd" "foo" bar "b a z"' 

; Or let Windows select the batch handler: 
ExecWait '"$INSTDIR\64-bitRegistration\EIQServersRegistration.cmd" "foo" bar "b a z"' 
SectionEnd