iglezz,
Ну да, должен работать, но не работает. Вот с этого кода скомпилите экзешник и сами убедитесь:
Код:

RequestExecutionLevel user
OutFile "test.exe"
!include "LogicLib.nsh"
!include "WordFunc.nsh"
!include "TextFunc.nsh"
Function .onInit
StrCpy $R6 "c:\"
System::Call 'Kernel32::GetVolumeInformation(t "$R6",t.r3,i ${NSIS_MAX_STRLEN},*i,*i,*i.r1,t.r2,i ${NSIS_MAX_STRLEN})i.r0'
${If} $0 <> 0
IntFmt $1 "%#.8x" $1
StrCpy $R7 "$1"
${EndIf}
${LineSum} "Info.txt" $R0
StrCpy $R1 0
IntOp $R1 $R1 + 1
IntCmp $R1 $R0 0 0 end
${LineRead} "Info.txt" "$R1" $R3
end:
StrCpy $R8 "$R3"
FunctionEnd
Section Message
MessageBox MB_OK " 1значение $R7 - 2значение $R8 "
StrCmp $R7 "$R8" Well Unequal
Well:
MessageBox MB_OK "Значения равны"
Goto Next
Unequal:
MessageBox MB_OK "Значения не равны"
Next:
StrCmp $R7 '$R8' 0 +3
DetailPrint '$$R7 == "$R8"'
Goto +2
DetailPrint '$$R7 != "$R8"'
SectionEnd
Section File
FileOpen $0 "Info.txt" w
FileWrite $0 "$R7$\r$\n"
FileClose $0
SectionEnd
Первый запуск не считается, потому что еще не будет файла Info.txt. А вот второй запуск в сообщении визуально покажет, что переменные бы равны, но по двум кодам сравнения через StrCmp $R7 '$R8' покажет, что совсем не равны.