Ввод цифрового пароля (в примере - это 77777 ) с сопроводительными сообщениями можно организовать и так :
читать дальше »
Код:

OutFile 'Password-Example.exe'
!include "MUI.nsh"
!include "LogicLib.nsh"
!include "nsDialogs.nsh"
!include 'WordFunc.nsh'
Page custom ConfigPage CheckConfig ''
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE 'English'
!insertmacro StrFilter
Var Password_Text
Var Password_Confirm
Function ConfigPage
!insertmacro MUI_HEADER_TEXT 'TEXT' 'HEADER_TEXT'
nsDialogs::Create 1018
Pop $0
${NSD_CreateGroupBox} 50% 0 50% 80% " Пароль"
${NSD_CreateLabel} 61% 20u 30% 10% ' Введите пароль'
${NSD_CreateLabel} 60% 70u 33% 10% ' Подтвердите пароль'
${NSD_CreatePassword} 65% 40u 20% 10% ''
Pop $Password_Text
${NSD_CreatePassword} 65% 85u 20% 10% ''
Pop $Password_Confirm
; максимальное количества цифр пароля
${NSD_SetTextLimit} $Password_Text 5
${NSD_SetTextLimit} $Password_Confirm 5
${NSD_OnChange} $Password_Text EditNotify
${NSD_OnChange} $Password_Confirm EditNotify
nsDialogs::Show
FunctionEnd
Function CheckConfig
${NSD_GetText} $Password_Text $0
${NSD_GetText} $Password_Confirm $1
${If} $0 == ''
${OrIf} $1 == ''
MessageBox MB_OK 'Введите пароль !'
Abort
${EndIf}
; ПАРОЛЬ
StrCpy $5 77777
${If} $0 != $5
MessageBox MB_OK 'Не правильный пароль ! !'
Abort
${EndIf}
${If} $0 == $5
${AndIf} $1 != $5
MessageBox MB_OK 'Не правильное подтверждение пароля !'
Abort
${EndIf}
FunctionEnd
Function EditNotify
Pop $R0
; считываем изменения из $R0 и заносим в переменную $0
${NSD_GetText} $R0 $0
; определяем длину строки из $0 ( заносим значение в $1 )
StrLen $1 $0
; фильтруем для $0 ( это $Password_Text ), ввод только цифр (для этого уст значение параметра : 1 )
; заносим результат в $2
${StrFilter} $0 '1' '' '' $2
; определяем длину строки из $2 - ( заносим значение в $3 )
StrLen $3 $2
; если $1 равно любому значению, кроме равного $3
${If} $1 <> $3
MessageBox MB_OK 'Для ввода допустимы только цифры !'
${EndIf}
FunctionEnd
Section
SectionEnd
Ессно можно ещё расширить параметры проверки пароля - проверять количество вводимых символов, разбивку на группы (если надо ), сразу вызывать сообщение , если ввод не верный и т.д.