NSIS/Contrib/Modern UI/System.nsh

683 lines
12 KiB
NSIS
Raw Normal View History

;NSIS Modern User Interface version 1.4
;Macro System
;Written by Joost Verburg
;See Basic.nsi, Multilanguage.nsi and InstallOptions.nsi
;in the Examples\Modern UI directory for examples of usage.
;--------------------------------
!verbose 3
!ifndef MUI_MACROS_USED
!define MUI_MACROS_USED
!include "${NSISDIR}\Examples\WinMessages.nsh"
!define MUI_TEMP1 $R0
!define MUI_TEMP2 $R1
!macro MUI_INTERFACE
!verbose 3
;User interface
!ifndef MUI_UI
!define MUI_UI "${NSISDIR}\Contrib\UIs\modern.exe"
!endif
!ifndef MUI_ICON
!define MUI_ICON "${NSISDIR}\Contrib\Icons\modern-install.ico"
!endif
!ifndef MUI_UNICON
!define MUI_UNICON "${NSISDIR}\Contrib\Icons\modern-uninstall.ico"
!endif
!ifndef MUI_CHECKBITMAP
!define MUI_CHECKBITMAP "${NSISDIR}\Contrib\Icons\modern.bmp"
!endif
!ifndef MUI_FONT
!define MUI_FONT "Tahoma"
!endif
!ifndef MUI_INSTALLCOLORS
!define MUI_INSTALLCOLORS "/windows"
!endif
!ifndef MUI_PROGRESSBAR
!define MUI_PROGRESSBAR "smooth"
!endif
!ifndef MUI_BRANDINGTEXT
!define MUI_BRANDINGTEXT "" ;Default value
!endif
XPStyle On
ChangeUI all "${MUI_UI}"
Icon "${MUI_ICON}"
UninstallIcon "${MUI_UNICON}"
CheckBitmap "${MUI_CHECKBITMAP}"
SetFont "${MUI_FONT}" 8
InstallColors "${MUI_INSTALLCOLORS}"
InstProgressFlags "${MUI_PROGRESSBAR}"
BrandingText /TRIMRIGHT "${MUI_BRANDINGTEXT}"
!verbose 4
!macroend
!macro MUI_INTERFACE_ALLRES UI ICON UNICON CHECKS PROGRESSBAR FONT
!define MUI_UI "${UI}"
!define MUI_ICON "${ICON}"
!define MUI_UNICON "${UNICON}"
!define MUI_CHECKBITMAP "${CHECKS}"
!define MUI_PROGRESSBAR "${PROGRESSBAR}"
!define MUI_FONT "${FONT}"
!insertmacro MUI_INTERFACE
!macroend
!macro MUI_INNERDIALOG_TEXT CONTROL TEXT
!verbose 3
;Set text on inner dialogs component
Push ${MUI_TEMP1}
FindWindow ${MUI_TEMP1} "#32770" "" $HWNDPARENT
GetDlgItem ${MUI_TEMP1} ${MUI_TEMP1} ${CONTROL}
SendMessage ${MUI_TEMP1} ${WM_SETTEXT} 0 "STR:${TEXT}"
Pop ${MUI_TEMP1}
!verbose 4
!macroend
!macro MUI_HEADER_TEXT TEXT SUBTEXT
!verbose 3
;Set text on the white rectangle
Push ${MUI_TEMP1}
GetDlgItem ${MUI_TEMP1} $HWNDPARENT 1037
SendMessage ${MUI_TEMP1} ${WM_SETTEXT} 0 "STR:${TEXT}"
GetDlgItem ${MUI_TEMP1} $HWNDPARENT 1038
SendMessage ${MUI_TEMP1} ${WM_SETTEXT} 0 "STR:${SUBTEXT}"
Pop ${MUI_TEMP1}
!verbose 4
!macroend
!macro MUI_DESCRIPTION_INIT
!verbose 3
Push ${MUI_TEMP1}
FindWindow ${MUI_TEMP1} "#32770" "" $HWNDPARENT
GetDlgItem ${MUI_TEMP1} ${MUI_TEMP1} 1043
!verbose 4
!macroend
!macro MUI_DESCRIPTION_TEXT VAR TEXT
!verbose 3
;Set text on the Description frame
StrCmp $0 ${VAR} "" +3
SendMessage ${MUI_TEMP1} ${WM_SETTEXT} 0 "STR:${TEXT}"
Goto done
!verbose 4
!macroend
!macro MUI_DESCRIPTION_END
!verbose 3
done:
Pop ${MUI_TEMP1}
!verbose 4
!macroend
!macro MUI_FINISHHEADER
!verbose 3
;Finish text on the header (white rectangle)
!insertmacro MUI_HEADER_TEXT $(MUI_TEXT_FINISHED_TITLE) $(MUI_TEXT_FINISHED_SUBTITLE)
!verbose 4
!macroend
!macro MUI_UNFINISHHEADER
!verbose 3
;Finish text on the header (white rectangle)
!insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_FINISHED_TITLE) $(MUI_UNTEXT_FINISHED_SUBTITLE)
!verbose 4
!macroend
!macro MUI_ABORTWARNING
!verbose 3
;Warning when Cancel button is pressed
MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(MUI_TEXT_ABORTWARNING)" IDYES quit
Abort
quit:
!verbose 4
!macroend
!macro MUI_GUIINIT
!verbose 3
Push ${MUI_TEMP1}
Push ${MUI_TEMP2}
GetDlgItem ${MUI_TEMP1} $HWNDPARENT 1037
CreateFont ${MUI_TEMP2} "Tahoma" 10 700
SendMessage ${MUI_TEMP1} ${WM_SETFONT} ${MUI_TEMP2} 0
SetStaticBkColor ${MUI_TEMP1} 0x00FFFFFF
GetDlgItem ${MUI_TEMP1} $HWNDPARENT 1038
SetStaticBkColor ${MUI_TEMP1} 0x00FFFFFF
GetDlgItem ${MUI_TEMP1} $HWNDPARENT 1034
SetStaticBkColor ${MUI_TEMP1} 0x00FFFFFF
GetDlgItem ${MUI_TEMP1} $HWNDPARENT 1039
SetStaticBkColor ${MUI_TEMP1} 0x00FFFFFF
Pop ${MUI_TEMP2}
Pop ${MUI_TEMP1}
!verbose 4
!macroend
!macro MUI_PAGECOMMANDS
!verbose 3
!ifndef MUI_CUSTOMPAGECOMMANDS
!insertmacro MUI_PAGECOMMAND_LICENSE
!insertmacro MUI_PAGECOMMAND_COMPONENTS
!insertmacro MUI_PAGECOMMAND_DIRECTORY
!insertmacro MUI_PAGECOMMAND_INSTFILES
!endif
!verbose 4
!macroend
!macro MUI_PAGECOMMAND_LICENSE
!verbose 3
!ifdef MUI_LICENSEPAGE
Page license SetLicense SetLicenseDialog
!endif
!verbose 4
!macroend
!macro MUI_PAGECOMMAND_COMPONENTS
!verbose 3
!ifdef MUI_COMPONENTSPAGE
Page components SetComponents SetComponentsDialog
!endif
!verbose 4
!macroend
!macro MUI_PAGECOMMAND_DIRECTORY
!verbose 3
!ifdef MUI_DIRECTORYPAGE
Page directory SetDirectory SetDirectoryDialog
!endif
!verbose 4
!macroend
!macro MUI_PAGECOMMAND_INSTFILES
!verbose 3
Page instfiles SetInstFiles
!verbose 4
!macroend
!macro MUI_UNPAGECOMMANDS
!verbose 3
!ifndef MUI_UNCUSTOMPAGECOMMANDS
!insertmacro MUI_UNPAGECOMMAND_CONFIRM
!insertmacro MUI_UNPAGECOMMAND_INSTFILES
!endif
!verbose 4
!macroend
!macro MUI_UNPAGECOMMAND_CONFIRM
!verbose 3
UninstPage uninstConfirm un.SetUninstConfirm
!verbose 4
!macroend
!macro MUI_UNPAGECOMMAND_INSTFILES
!verbose 3
UninstPage instfiles un.SetInstFiles
!verbose 4
!macroend
!macro MUI_LANGUAGE LANGUAGE
!verbose 3
!include "${NSISDIR}\Contrib\Modern UI\Language files\${LANGUAGE}.nsh"
!verbose 4
!macroend
;--------------------------------
;INSTALL OPTIONS
!macro MUI_INSTALLOPTIONS_EXTRACT FILE
!verbose 3
;Init plugin system
!ifndef MUI_INSTALLOPTIONS_INITPLUGINS
!define MUI_INSTALLOPTIONS_INITPLUGINS
Call Initialize_____Plugins
SetDetailsPrint both
!endif
File /oname=$PLUGINSDIR\${FILE} "${FILE}"
!verbose 4
!macroend
!macro MUI_INSTALLOPTIONS_UNEXTRACT FILE
!verbose 3
;Init plugin system
!ifndef MUI_INSTALLOPTIONS_UNINITPLUGINS
!define MUI_INSTALLOPTIONS_UNINITPLUGINS
Call un.Initialize_____Plugins
SetDetailsPrint both
!endif
File /oname=$PLUGINSDIR\${FILE} "${FILE}"
!verbose 4
!macroend
!macro MUI_INSTALLOPTIONS_SHOW FILE
!verbose 3
Push ${MUI_TEMP1}
InstallOptions::dialog "$PLUGINSDIR\${FILE}"
Pop ${MUI_TEMP1}
StrCmp ${MUI_TEMP1} "cancel" "" +2
Quit
StrCmp ${MUI_TEMP1} "back" "" +3
Pop ${MUI_TEMP1}
Abort
Pop ${MUI_TEMP1}
!verbose 4
!macroend
!macro MUI_INSTALLOPTIONS_READ VAR FILE SECTION KEY
!verbose 3
ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
!verbose 4
!macroend
!macro MUI_INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
!verbose 3
WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}"
!verbose 4
!macroend
!macro MUI_INSTALLOPTIONS_WRITETITLE FILE TITLE
!verbose 3
Push ${MUI_TEMP1}
Push ${MUI_TEMP2}
StrCpy ${MUI_TEMP1} "$(MUI_TEXT_SETUPCAPTION)"
StrCpy ${MUI_TEMP2} "${TITLE}"
!insertmacro MUI_INSTALLOPTIONS_WRITE "${FILE}" "Settings" "Title" "${MUI_TEMP1}: ${MUI_TEMP2}"
Pop ${MUI_TEMP2}
Pop ${MUI_TEMP1}
!macroend
!macro MUI_INSTALLOPTIONS_WRITEABORTWARNING FILE
!verbose 3
!ifdef MUI_ABORTWARNING
!insertmacro MUI_INSTALLOPTIONS_WRITE "${FILE}" "Settings" "CancelConfirm" "$(MUI_TEXT_ABORTWARNING)"
!insertmacro MUI_INSTALLOPTIONS_WRITE "${FILE}" "Settings" "CancelConfirmCaption" "$(MUI_TEXT_SETUPCAPTION)"
!endif
!verbose 4
!macroend
;--------------------------------
;SECTIONS
!macro MUI_SECTIONS_FINISHHEADER
!verbose 3
Section ""
;Invisible section to display the Finish header
!insertmacro MUI_FINISHHEADER
SectionEnd
!verbose 4
!macroend
;--------------------------------
;FUNCTIONS
!macro MUI_FUNCTIONS_GUIINIT
!verbose 3
Function .onGUIInit
!insertmacro MUI_GUIINIT
FunctionEnd
!verbose 4
!macroend
!macro MUI_FUNCTIONS_PAGES
!verbose 3
!ifdef MUI_LICENSEPAGE
!insertmacro MUI_FUNCTIONS_LICENSEPAGE SetLicense SetLicenseDialog
!endif
!ifdef MUI_COMPONENTSPAGE
!insertmacro MUI_FUNCTIONS_COMPONENTSPAGE SetComponents SetComponentsDialog
!endif
!ifdef MUI_DIRECTORYPAGE
!insertmacro MUI_FUNCTIONS_DIRECTORYPAGE SetDirectory SetDirectoryDialog
!endif
!insertmacro MUI_FUNCTIONS_INSTFILESPAGE SetInstFiles
!verbose 4
!macroend
!macro MUI_FUNCTIONS_LICENSEPAGE SETLICENSE SETLICENSEDIALOG
!verbose 3
Function "${SETLICENSE}"
!insertmacro MUI_HEADER_TEXT $(MUI_TEXT_LICENSE_TITLE) $(MUI_TEXT_LICENSE_SUBTITLE)
FunctionEnd
Function "${SETLICENSEDIALOG}"
!insertmacro MUI_INNERDIALOG_TEXT 1040 $(MUI_INNERTEXT_LICENSE)
FunctionEnd
!verbose 4
!macroend
!macro MUI_FUNCTIONS_COMPONENTSPAGE SETCOMPONENTS SETCOMPONENTSDIALOG
!verbose 3
Function "${SETCOMPONENTS}"
!insertmacro MUI_HEADER_TEXT $(MUI_TEXT_COMPONENTS_TITLE) $(MUI_TEXT_COMPONENTS_SUBTITLE)
FunctionEnd
Function "${SETCOMPONENTSDIALOG}"
!insertmacro MUI_INNERDIALOG_TEXT 1042 $(MUI_INNERTEXT_DESCRIPTION_TITLE)
!insertmacro MUI_INNERDIALOG_TEXT 1043 $(MUI_INNERTEXT_DESCRIPTION_INFO)
FunctionEnd
!verbose 4
!macroend
!macro MUI_FUNCTIONS_DIRECTORYPAGE SETDIRECTORYPAGE SETDIRECTORYDIALOGPAGE
!verbose 3
Function "${SETDIRECTORYPAGE}"
!insertmacro MUI_HEADER_TEXT $(MUI_TEXT_DIRSELECT_TITLE) $(MUI_TEXT_DIRSELECT_SUBTITLE)
FunctionEnd
Function "${SETDIRECTORYDIALOGPAGE}"
!insertmacro MUI_INNERDIALOG_TEXT 1041 $(MUI_INNERTEXT_DESTINATIONFOLDER)
FunctionEnd
!verbose 4
!macroend
!macro MUI_FUNCTIONS_INSTFILESPAGE SETINSTFILES
!verbose 3
Function "${SETINSTFILES}"
!insertmacro MUI_HEADER_TEXT $(MUI_TEXT_INSTALLING_TITLE) $(MUI_TEXT_INSTALLING_SUBTITLE)
FunctionEnd
!verbose 4
!macroend
!macro MUI_FUNCTIONS_DESCRIPTION_START
!verbose 3
Function .onMouseOverSection
!insertmacro MUI_DESCRIPTION_INIT
!verbose 4
!macroend
!macro MUI_FUNCTIONS_DESCRIPTION_END
!verbose 3
!insertmacro MUI_DESCRIPTION_END
FunctionEnd
!verbose 4
!macroend
!macro MUI_FUNCTIONS_ABORTWARNING
!verbose 3
!ifdef MUI_ABORTWARNING
Function .onUserAbort
!insertmacro MUI_ABORTWARNING
FunctionEnd
!endif
!verbose 4
!macroend
!macro MUI_UNFUNCTIONS_GUIINIT
!verbose 3
Function un.onGUIInit
!insertmacro MUI_GUIINIT
FunctionEnd
!verbose 4
!macroend
!macro MUI_UNFUNCTIONS_PAGES
!insertmacro MUI_UNFUNCTIONS_CONFIRMPAGE un.SetUninstConfirm
!insertmacro MUI_UNFUNCTIONS_INSTFILESPAGE un.SetInstFiles
!macroend
!macro MUI_UNFUNCTIONS_CONFIRMPAGE UNSETUNINSTCONFIRM
!verbose 3
Function "${UNSETUNINSTCONFIRM}"
!insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_INTRO_TITLE) $(MUI_UNTEXT_INTRO_SUBTITLE)
FunctionEnd
!verbose 4
!macroend
!macro MUI_UNFUNCTIONS_INSTFILESPAGE UNSETINSTFILES
!verbose 3
Function ${UNSETINSTFILES}
!insertmacro MUI_HEADER_TEXT $(MUI_UNTEXT_UNINSTALLING_TITLE) $(MUI_UNTEXT_UNINSTALLING_SUBTITLE)
FunctionEnd
!verbose 4
!macroend
;--------------------------------
;BASIC MACRO'S
!macro MUI_SYSTEM
!verbose 3
!insertmacro MUI_INTERFACE
!insertmacro MUI_BASIC
!insertmacro MUI_UNBASIC
!verbose 4
!macroend
!macro MUI_BASIC
!verbose 3
!insertmacro MUI_PAGECOMMANDS
!insertmacro MUI_FUNCTIONS_PAGES
!insertmacro MUI_FUNCTIONS_GUIINIT
!insertmacro MUI_FUNCTIONS_ABORTWARNING
!verbose 4
!macroend
!macro MUI_UNBASIC
!verbose 3
!ifdef MUI_UNINSTALLER
!insertmacro MUI_UNPAGECOMMANDS
!insertmacro MUI_UNFUNCTIONS_PAGES
!insertmacro MUI_UNFUNCTIONS_GUIINIT
!endif
!verbose 4
!macroend
!endif
!verbose 4
;--------------------------------