Количество страниц фиксируется во время компиляции.
Если вам нужны разные «скрытые» страницы или просто несколько экземпляров одной и той же страницы, я бы сказал, что вам нужно просто пропустить страницы, когда это требуется вСоздайте обратный вызов для страницы, вызвав прерывание, но это не будет работать, если количество страниц не ограничено.
Также возможно перейти непосредственно на страницу:
Outfile test.exe
Requestexecutionlevel user
!include nsDialogs.nsh
Page Custom mypagecreate mypageleave
Page Directory dirpagecreate
Page Instfiles
Function mypagecreate
Var /Global MyCheckBox
nsDialogs::Create /NOUNLOAD 1018
Pop $0
${NSD_CreateCheckBox} 10% 20u 80% 12u "Again?"
Pop $MyCheckBox
nsDialogs::Show
FunctionEnd
Function mypageleave
${NSD_GetState} $MyCheckBox $0
StrCpy $MyCheckBox $0 ; This is a bit of a hack, we reuse the HWND var to store the state
FunctionEnd
Function dirpagecreate
${If} $MyCheckBox <> 0 ; Was the checkbox checked?
SendMessage $HWNDPARENT 0x408 -1 "" ; If so, go back
${EndIf}
FunctionEnd
Section
SectionEnd