NSIS est un programme GUI et n'a pas vraiment la possibilité d'écrire sur stdout.
Sous XP et les versions ultérieures, vous pouvez le faire avec le plugin système :
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
System::Call 'kernel32::AttachConsole(i -1)'
FileWrite $0 "hello"
Sur < XP, il n'y a pas d'AttachConsole et vous devez appeler AllocConsole sur ces systèmes (cela ouvrira probablement une nouvelle fenêtre de console).
Editer : Vous pouvez ouvrir une nouvelle console si le processus parent n'en a pas déjà une avec
!include LogicLib.nsh
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
System::Call 'kernel32::AttachConsole(i -1)i.r1'
${If} $0 = 0
${OrIf} $1 = 0
System::Call 'kernel32::AllocConsole()'
System::Call 'kernel32::GetStdHandle(i -11)i.r0'
${EndIf}
FileWrite $0 "hello$\n"
Mais cela n'a pas vraiment de sens en ce qui concerne la gestion de / ?, vous pourriez tout aussi bien ouvrir une boîte de message lorsqu'il n'y a pas de console.
!include LogicLib.nsh
StrCpy $9 "USAGE: Hello world!!" ;the message
System::Call 'kernel32::GetStdHandle(i -11)i.r0' ;try to get stdout
System::Call 'kernel32::AttachConsole(i -1)i.r1' ;attach to parent console
${If} $0 <> 0
${AndIf} $1 <> 0
FileWrite $0 "$9$\n"
${Else}
MessageBox mb_iconinformation $9
${EndIf}