yyv,
Вы проверочку на размер сделаете, а то если текст будет превышать размер хранения переменной - с треском грохнется NSIS. Вы же помещаете текст целиком в переменную... в $1 - размер в байтах...
Код:
FileOpen $0 text.txt r
IfErrors Exit
System::Call 'kernel32::GetFileSize(ir0, i0) i .r1'
IntOp $1 $1 + 1 ; for terminating zero
IntCmp $1 ${NSIS_MAX_STRLEN} 0 0 Exit
System::Alloc $1
Pop $2
System::Call 'kernel32::ReadFile(ir0, ir2, ir1, *i.r3, i0)'
FileClose $0
System::Call "*$2(&t$3.r4)" ;из указателя на буфер - вытаскиваем текст
MessageBox MB_ICONINFORMATION|MB_OK "$4" IDOK ;в $4 - содержимое всего файла
System::Free $2
Exit: