diff --git a/Contrib/Modern UI/System.nsh b/Contrib/Modern UI/System.nsh index 8863210d..2b7f6bba 100644 --- a/Contrib/Modern UI/System.nsh +++ b/Contrib/Modern UI/System.nsh @@ -12,13 +12,8 @@ !include "${NSISDIR}\Examples\WinMessages.nsh" -!define IO_DIRECTION_NEXT 1 -!define IO_DIRECTION_PREV 2 - -!define IO_INITPLUGINS_1 "Call Initialize_____Plugins" -!define IO_INITPLUGINS_2 "SetDetailsPrint both" -!define IO_UNINITPLUGINS_1 "Call un.Initialize_____Plugins" -!define IO_UNINITPLUGINS_2 "SetDetailsPrint both" +!define MUI_INSTALLOPTIONS_DIRECTION_NEXT 1 +!define MUI_INSTALLOPTIONS_DIRECTION_PREV 2 !define MUI_TEMP1 $R0 !define MUI_TEMP2 $R1 @@ -228,12 +223,11 @@ !macro MUI_INSTALLOPTIONS_EXTRACT FILE ;Init plugin system - ${IO_INITPLUGINS_1} - ${IO_INITPLUGINS_2} - !undef IO_INITPLUGINS_1 - !undef IO_INITPLUGINS_2 - !define IO_INITPLUGINS_1 "" - !define IO_INITPLUGINS_2 "" + !ifndef MUI_INSTALLOPTIONS_INITPLUGINS + !define MUI_INSTALLOPTIONS_INITPLUGINS + Call Initialize_____Plugins + SetDetailsPrint both + !endif File /oname=$PLUGINSDIR\${FILE} "${FILE}" @@ -242,6 +236,12 @@ !macro MUI_INSTALLOPTIONS_UNEXTRACT FILE ;Init plugin system + !ifndef MUI_INSTALLOPTIONS_UNINITPLUGINS + !define MUI_INSTALLOPTIONS_UNINITPLUGINS + Call un.Initialize_____Plugins + SetDetailsPrint both + !endif + ${IO_UNINITPLUGINS_1} ${IO_UNINITPLUGINS_2} !undef IO_UNINITPLUGINS_1 @@ -262,7 +262,7 @@ !macro MUI_INSTALLOPTIONS_NEXTPAGE StrCmp ${IO_NOSETDIRECTION} "1" no_setdirection - !insertmacro MUI_INSTALLOPTIONS_SETDIRECTION ${IO_DIRECTION_NEXT} + !insertmacro MUI_INSTALLOPTIONS_SETDIRECTION ${MUI_INSTALLOPTIONS_DIRECTION_NEXT} no_setdirection: StrCpy ${IO_NOSETDIRECTION} "0" @@ -271,7 +271,7 @@ !macro MUI_INSTALLOPTIONS_PREVPAGE StrCmp ${IO_NOSETDIRECTION} "1" no_setdirection - !insertmacro MUI_INSTALLOPTIONS_SETDIRECTION ${IO_DIRECTION_PREV} + !insertmacro MUI_INSTALLOPTIONS_SETDIRECTION ${MUI_INSTALLOPTIONS_DIRECTION_PREV} no_setdirection: StrCpy ${IO_NOSETDIRECTION} "0" @@ -311,10 +311,10 @@ !macro MUI_INSTALLOPTIONS_BACK - StrCmp ${IO_DIRECTION} "${IO_DIRECTION_NEXT}" "" +3 + StrCmp ${IO_DIRECTION} "${MUI_INSTALLOPTIONS_DIRECTION_NEXT}" "" +3 Call .onPrevPage Abort - StrCmp ${IO_DIRECTION} "${IO_DIRECTION_PREV}" "" +3 + StrCmp ${IO_DIRECTION} "${MUI_INSTALLOPTIONS_DIRECTION_PREV}" "" +3 Call .onPrevPage Goto done @@ -322,10 +322,10 @@ !macro MUI_INSTALLOPTIONS_NEXT - StrCmp ${IO_DIRECTION} ${IO_DIRECTION_NEXT} "" +3 + StrCmp ${IO_DIRECTION} ${MUI_INSTALLOPTIONS_DIRECTION_NEXT} "" +3 Call .onNextPage Goto done - StrCmp ${IO_DIRECTION} ${IO_DIRECTION_PREV} "" +3 + StrCmp ${IO_DIRECTION} ${MUI_INSTALLOPTIONS_DIRECTION_PREV} "" +3 Call .onNextPage Abort @@ -349,10 +349,10 @@ !macro MUI_INSTALLOPTIONS_UNBACK - StrCmp ${IO_DIRECTION} "${IO_DIRECTION_NEXT}" "" +3 + StrCmp ${IO_DIRECTION} "${MUI_INSTALLOPTIONS_DIRECTION_NEXT}" "" +3 Call un.onPrevPage Abort - StrCmp ${IO_DIRECTION} "${IO_DIRECTION_PREV}" "" +3 + StrCmp ${IO_DIRECTION} "${MUI_INSTALLOPTIONS_DIRECTION_PREV}" "" +3 Call un.onPrevPage Goto done @@ -360,10 +360,10 @@ !macro MUI_INSTALLOPTIONS_UNNEXT - StrCmp ${IO_DIRECTION} ${IO_DIRECTION_NEXT} "" +3 + StrCmp ${IO_DIRECTION} ${MUI_INSTALLOPTIONS_DIRECTION_NEXT} "" +3 Call un.onNextPage Goto done - StrCmp ${IO_DIRECTION} ${IO_DIRECTION_PREV} "" +3 + StrCmp ${IO_DIRECTION} ${MUI_INSTALLOPTIONS_DIRECTION_PREV} "" +3 Call un.onNextPage Abort @@ -385,4 +385,146 @@ !macroend + +;BASIC FUNCTIONS + +!macro MUI_BASICFUNCTIONS + +Function .onNextPage + !insertmacro MUI_NEXTPAGE SetPage +FunctionEnd + +Function .onPrevPage + !insertmacro MUI_PREVPAGE SetPage +FunctionEnd + +Function .onInitDialog + + !insertmacro MUI_INNERDIALOG_INIT + + StrCpy ${MUI_TEMP1} 0 + + !ifdef MUI_LICENSEPAGE + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_licensepage + !insertmacro MUI_INNERDIALOG_TEXT 1040 $(MUI_INNERTEXT_LICENSE) + Goto done + done_licensepage: + !endif + + !ifdef MUI_COMPONENTPAGE + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_componentpage + !insertmacro MUI_INNERDIALOG_TEXT 1042 $(MUI_INNERTEXT_DESCRIPTION_TITLE) + !insertmacro MUI_INNERDIALOG_TEXT 1043 $(MUI_INNERTEXT_DESCRIPTION_INFO) + Goto done + done_componentpage: + !endif + + !ifdef MUI_DIRSELECTPAGE + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_dirselectpage + !insertmacro MUI_INNERDIALOG_TEXT 1041 $(MUI_INNERTEXT_DESTINATIONFOLDER) + Goto done + done_dirselectpage: + !endif + + !insertmacro MUI_INNERDIALOG_END + +FunctionEnd + +Function SetPage + + !insertmacro MUI_PAGE_INIT + + StrCpy ${MUI_TEMP1} 0 + + !ifdef MUI_LICENSEPAGE + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_licensepage + !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_LICENSE_TITLE) $(MUI_TEXT_LICENSE_SUBTITLE) + Goto done + done_licensepage: + !endif + + !ifdef MUI_COMPONENTPAGE + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_componentpage + !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_COMPONENTS_TITLE) $(MUI_TEXT_COMPONENTS_SUBTITLE) + Goto done + done_componentpage: + !endif + + !ifdef MUI_DIRSELECTPAGE + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_dirselectpage + !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_DIRSELECT_TITLE) $(MUI_TEXT_DIRSELECT_SUBTITLE) + Goto done + done_dirselectpage: + !endif + + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_installingpage + !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_INSTALLING_TITLE) $(MUI_TEXT_INSTALLING_SUBTITLE) + Goto done + done_installingpage: + + IntOp ${MUI_TEMP1} ${MUI_TEMP1} + 1 + StrCmp ${CURRENTPAGE} ${MUI_TEMP1} "" done_finishedpage + !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_FINISHED_TITLE) $(MUI_TEXT_FINISHED_SUBTITLE) + Goto done + done_finishedpage: + + !insertmacro MUI_PAGE_END + +FunctionEnd + +!macroend + +!macro MUI_FUNCTION_DESCRIPTION_START + Function .onMouseOverSection + !insertmacro MUI_DESCRIPTION_INIT +!macroend + +!macro MUI_FUNCTION_DESCRIPTION_END + !insertmacro MUI_DESCRIPTION_END + FunctionEnd +!macroend + +!macro MUI_FUNCTION_ABORTWARNING + Function .onUserAbort + !insertmacro MUI_ABORTWARNING + FunctionEnd +!macroend + +!macro MUI_UNBASICFUNCTIONS + +Function un.onNextPage + + !insertmacro MUI_NEXTPAGE un.SetPage + +FunctionEnd + +Function un.SetPage + + !insertmacro MUI_PAGE_INIT + + !insertmacro MUI_PAGE_START 1 + !insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_INTRO_TITLE) $(MUI_UNTEXT_INTRO_SUBTITLE) + !insertmacro MUI_PAGE_STOP 1 + + !insertmacro MUI_PAGE_START 2 + !insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_UNINSTALLING_TITLE) $(MUI_UNTEXT_UNINSTALLING_SUBTITLE) + !insertmacro MUI_PAGE_STOP 2 + + !insertmacro MUI_PAGE_START 3 + !insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_FINISHED_TITLE) $(MUI_UNTEXT_FINISHED_SUBTITLE) + !insertmacro MUI_PAGE_STOP 3 + + !insertmacro MUI_PAGE_END + +FunctionEnd + +!macroend + !endif \ No newline at end of file diff --git a/Examples/Modern UI/Basic.nsi b/Examples/Modern UI/Basic.nsi index 41fe578b..d9b40e3e 100644 --- a/Examples/Modern UI/Basic.nsi +++ b/Examples/Modern UI/Basic.nsi @@ -33,31 +33,23 @@ ;License dialog LicenseData "${NSISDIR}\Contrib\Modern UI\License.txt" - ;Component-select dialog - ;Descriptions - LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy the modern.exe file to the application folder." - LangString DESC_SecCreateUninst ${LANG_ENGLISH} "Create a uninstaller which can automatically delete ${NAME}." + ;Descriptions + LangString DESC_SecCopyUI ${LANG_ENGLISH} "Copy the modern.exe file to the application folder." ;Folder-select dialog InstallDir "$PROGRAMFILES\${NAME}" - ;-------------------------------- ;Installer Sections Section "modern.exe" SecCopyUI - ;Add your stuff here + ;ADD YOUR OWN STUFF HERE! SetOutPath "$INSTDIR" File "${NSISDIR}\Contrib\UIs\modern.exe" - -SectionEnd - -Section "Create uninstaller" SecCreateUninst - - ;Add your stuff here - + + ;Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd @@ -72,96 +64,27 @@ SectionEnd ;-------------------------------- ;Installer Functions -Function .onInitDialog +!insertmacro MUI_BASICFUNCTIONS - !insertmacro MUI_INNERDIALOG_INIT - - !insertmacro MUI_INNERDIALOG_START 1 - !insertmacro MUI_INNERDIALOG_TEXT 1040 $(MUI_INNERTEXT_LICENSE) - !insertmacro MUI_INNERDIALOG_STOP 1 - - !insertmacro MUI_INNERDIALOG_START 2 - !insertmacro MUI_INNERDIALOG_TEXT 1042 $(MUI_INNERTEXT_DESCRIPTION_TITLE) - !insertmacro MUI_INNERDIALOG_TEXT 1043 $(MUI_INNERTEXT_DESCRIPTION_INFO) - !insertmacro MUI_INNERDIALOG_STOP 2 - - !insertmacro MUI_INNERDIALOG_START 3 - !insertmacro MUI_INNERDIALOG_TEXT 1041 $(MUI_INNERTEXT_DESTINATIONFOLDER) - !insertmacro MUI_INNERDIALOG_STOP 3 - - !insertmacro MUI_INNERDIALOG_END - -FunctionEnd - -Function .onNextPage - - !insertmacro MUI_NEXTPAGE SetPage - -FunctionEnd - -Function .onPrevPage - - !insertmacro MUI_PREVPAGE SetPage - -FunctionEnd - -Function SetPage - - !insertmacro MUI_PAGE_INIT - - !insertmacro MUI_PAGE_START 1 - !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_LICENSE_TITLE) $(MUI_TEXT_LICENSE_SUBTITLE) - !insertmacro MUI_PAGE_STOP 1 - - !insertmacro MUI_PAGE_START 2 - !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_COMPONENTS_TITLE) $(MUI_TEXT_COMPONENTS_SUBTITLE) - !insertmacro MUI_PAGE_STOP 2 - - !insertmacro MUI_PAGE_START 3 - !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_DIRSELECT_TITLE) $(MUI_TEXT_DIRSELECT_SUBTITLE) - !insertmacro MUI_PAGE_STOP 3 - - !insertmacro MUI_PAGE_START 4 - !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_INSTALLING_TITLE) $(MUI_TEXT_INSTALLING_SUBTITLE) - !insertmacro MUI_PAGE_STOP 4 - - !insertmacro MUI_PAGE_START 5 - !insertmacro MUI_HEADER_TEXT $(MUI_TEXT_FINISHED_TITLE) $(MUI_TEXT_FINISHED_SUBTITLE) - !insertmacro MUI_PAGE_STOP 5 - - !insertmacro MUI_PAGE_END - -FunctionEnd - -Function .onMouseOverSection - - !insertmacro MUI_DESCRIPTION_INIT - - !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI) - !insertmacro MUI_DESCRIPTION_TEXT ${SecCreateUninst} $(DESC_SecCreateUninst) - - !insertmacro MUI_DESCRIPTION_END - -FunctionEnd - -Function .onUserAbort - - !insertmacro MUI_ABORTWARNING - -FunctionEnd +!insertmacro MUI_FUNCTION_DESCRIPTION_START + !insertmacro MUI_DESCRIPTION_TEXT ${SecCopyUI} $(DESC_SecCopyUI) +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +!insertmacro MUI_FUNCTION_ABORTWARNING ;-------------------------------- ;Uninstaller Section Section "Uninstall" - ;Add your stuff here + ;ADD YOUR OWN STUFF HERE! Delete "$INSTDIR\modern.exe" Delete "$INSTDIR\Uninstall.exe" RMDir "$INSTDIR" + ;Display the Finish header !insertmacro MUI_FINISHHEADER un.SetPage SectionEnd @@ -169,30 +92,4 @@ SectionEnd ;-------------------------------- ;Uninstaller Functions -Function un.onNextPage - - !insertmacro MUI_NEXTPAGE un.SetPage - -FunctionEnd - -Function un.SetPage - - !insertmacro MUI_PAGE_INIT - - !insertmacro MUI_PAGE_START 1 - !insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_INTRO_TITLE) $(MUI_UNTEXT_INTRO_SUBTITLE) - !insertmacro MUI_PAGE_STOP 1 - - !insertmacro MUI_PAGE_START 2 - !insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_UNINSTALLING_TITLE) $(MUI_UNTEXT_UNINSTALLING_SUBTITLE) - !insertmacro MUI_PAGE_STOP 2 - - !insertmacro MUI_PAGE_START 3 - !insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_FINISHED_TITLE) $(MUI_UNTEXT_FINISHED_SUBTITLE) - !insertmacro MUI_PAGE_STOP 3 - - !insertmacro MUI_PAGE_END - -FunctionEnd - -;eof \ No newline at end of file +!insertmacro MUI_UNBASICFUNCTIONS \ No newline at end of file