Name bla OutFile bla.exe !include Sections.nsh InstallDir "$TEMP" DirText bla Page directory Page instfiles Page instfiles secInstPre ShowInstDetails show Section "" sec1 DetailPrint "doing stuff..." Sleep 300 DetailPrint "doing stuff..." Sleep 300 DetailPrint "doing stuff..." Sleep 300 DetailPrint "doing stuff..." Sleep 300 DetailPrint "doing stuff..." Sleep 300 DetailPrint "doing stuff..." Sleep 300 DetailPrint "doing stuff..." Sleep 300 DetailPrint "doing stuff..." Sleep 300 # move on to the next page right away SetAutoClose true DetailPrint "" DetailPrint "Installtion failed!" # set the flag StrCpy $1 1 MessageBox MB_OK "Prepare for rollback" # disable all sections loop: SectionSetFlags $0 0 IntOp $0 $0 + 1 IfErrors 0 loop # stop executing anymore code in this section Return SectionEnd Section /o "" rollback SetAutoClose false MessageBox MB_OK "rolling back" DetailPrint "rolling back..." Sleep 300 DetailPrint "rolling back..." Sleep 300 DetailPrint "rolling back..." Sleep 300 DetailPrint "rolling back..." Sleep 300 DetailPrint "rolling back..." Sleep 300 DetailPrint "rolling back..." Sleep 300 Abort "installation failed, rollback completed" SectionEnd Function secInstPre StrCmp $1 1 0 +3 SectionSetFlags ${rollback} ${SF_SELECTED} Return Abort FunctionEnd