Нашел выход в команде Abort - прекращение выполнения скрипта дальше, возможно это извращение но мне помогло
Код:

Page custom dogovor_vvod dogovor_confirm
;!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI 2\LicenseRU.txt"
!insertmacro MUI_PAGE_COMPONENTS
;!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
;--------------------------------
;установка
;--------------------------------
Var dogovor
Var textdogov
Var numberdogov
Function dogovor_vvod
nsDialogs::Create 1018
!insertmacro MUI_HEADER_TEXT "Введите номер договора с ISP PalNet" "Если вы не являетесь пользователем сети PalNet, прервите установку и удалите данное приложение"
Pop $dogovor
${NSD_CreateText} 30% 30% 90u 12u ""
Pop $textdogov
nsDialogs::Show
FunctionEnd
Function dogovor_confirm
${NSD_GetText} $textdogov $numberdogov
StrCpy $numberdogov $numberdogov 3
${ifnot} $numberdogov == pal ;если не равно pal*****
MessageBox MB_ICONSTOP|MB_YESNO " $\r$\nНеверный номер договора! $\r$\nПопробовать снова?$\r$\n $\r$\n" IDNO End
Abort
${else}
Goto Next
${endif}
End:
Quit
Next:
FunctionEnd
и дальше по тексту скрипта.
если есть более разумный выход при неверно введеных данных вернуться в начало выполнения скрипта, поделитесь идеей