我在使用NSIS安装程序中的某些参数运行批处理文件时遇到问题。
我已按照中提到的说明操作 Executing Batch File in NSIS installer
我正在使用的命令是
SetOutPath" $ INSTDIR \ 64-bitRegistration"
ExpandEnvStrings $ 0%COMSPEC%
ExecWait'" $ 0" " $ INSTDIR \ 64 bitRegistration \ EIQServersRegistration.cmd" " $ INSTDIR \参数1" " $ INSTDIR \参数2" " $ INSTDIR \参数3" " $ INSTDIR \ Param4" " $ INSTDIR \ Param5"'
我使用.cmd而不是.bat。我引用了ExecWait的参数。
我面临的是打开命令提示并且什么都不做。命令提示符未获取批处理文件,并且不执行批处理文件。
有人可以指出我错过了什么。
答案 0 :(得分:1)
使用%COMSPEC%时,必须在参数前加上/ C,告诉cmd.exe您要执行命令行的其余部分。这只是故事的一半,因为cmd.exe具有愚蠢的引用处理,您必须使用if 1==1
hack禁用:
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