Используйте nsExec (или один из других плагинов exec), если вам нужно захватить вывод, записанный на стандартный вывод консольной программой:
!include LogicLib.nsh
Section
nsExec::ExecToStack '"$InstDir\Generator.exe" param1 param2 param3'
Pop $0 ; Exit code
Pop $1 ; Output
${If} $1 == "string goes here"
MessageBox mb_Ok "Message text!"
Abort
${EndIf}
SectionEnd
Если вывод содержит переводы строки, вы можете включить их впроверка вашей строки:
Section
nsExec::ExecToStack '"cmd.exe" /c echo.Hello'
Pop $0 ; Exit code
Pop $1 ; Output
${If} $1 = "Hello$\r$\n"
MessageBox mb_OK "Hi"
${EndIf}
SectionEnd
или вы можете удалить переводы строк:
!include StrFunc.nsh
${StrTrimNewLines}
Section
nsExec::ExecToStack '"cmd.exe" /c echo.Hello'
Pop $0 ; Exit code
Pop $1 ; Output
${StrTrimNewLines} $1 $1
${If} $1 = "Hello"
MessageBox mb_OK "Hi"
${EndIf}
SectionEnd