L'interface utilisateur classique de NSIS n'a pas de page de fin, la page instfiles est généralement la dernière page et elle affichera un "bouton de fin" après l'exécution de toutes les sections. Vous pouvez définir le texte de n'importe quel bouton sur la même chaîne avec SendMessage $hwndButton ${WM_SETTEXT} 0 "STR:$(^CloseBtn)"
si vous voulez fournir votre propre page de fin.
La plupart des installateurs demandent les informations requises avant la page instfiles, si vous ne pouvez pas le faire, vous voudrez peut-être utiliser l'interface Moderne, elle fournira une page de fin pour vous :
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
Page custom nsDialogsPage nsDialogsPageLeave
!insertmacro MUI_PAGE_FINISH
J'étais un peu confus si vous vouliez deux pages ; une page d'entrée puis une page de fin ou une page d'entrée/fin combinée. Une page combinée est un peu étrange mais c'est possible:
!define AppName "Test"
Name "${AppName}"
Outfile "${AppName} setup.exe"
InstallDir $temp
!include LogicLib.nsh
!include WinMessages.nsh
!include nsDialogs.nsh
Var MyEndConfigPageStage
Page Directory
Page InstFiles
Page Custom MyEndConfigPageCreate MyEndConfigPageLeave /EnableCancel
Function MyEndConfigPageCreate
StrCpy $MyEndConfigPageStage 0
GetDlgItem $0 $hwndParent 1
SendMessage $0 ${WM_SETTEXT} 0 "STR:&Appliquer"
nsDialogs::Create 1018
Pop $0
${NSD_CreateCheckBox} 0 13u 100% -13u "FooBar"
Pop $1
nsDialogs::Show
FunctionEnd
Function MyEndConfigPageLeave
${If} $MyEndConfigPageStage > 0
Return
${EndIf}
${NSD_GetState} $1 $2
ClearErrors
WriteIniStr "$instdir\settings.ini" Dummy "FooBar" $2
${If} ${Errors}
MessageBox mb_iconstop "Impossible d'appliquer les paramètres !"
Abort
${EndIf}
IntOp $MyEndConfigPageStage $MyEndConfigPageStage + 1
GetDlgItem $0 $hwndParent 1
SendMessage $0 ${WM_SETTEXT} 0 "STR:$(^CloseBtn)"
GetDlgItem $0 $hwndParent 2
EnableWindow $0 0 ;Désactiver annuler
EnableWindow $1 0 ;Désactiver la case à cocher
Abort
FunctionEnd
Section
SectionEnd