NSIS Ultra-Modern User Interface

[Expand all]  [Collapse all]

Introduction

The Ultra-Modern User Interface is a new interface with a style like the most recent installers for NSIS 3 (Nullsoft Scriptable Install System) x86 edition, the tool that allows programmers to create such installers for Windows. Ultra-Modern UI and NSIS are released under an open source license.

The Ultra-Modern User Interface also features new pages (Confirm, Abort, AlternativeStartMenu, AdditionalTasks, Information, Maintenance, Update, SetupType...). The interface and the graphics can be customized using the provided settings and the new skins system.

Ultra-Modern UI include also an other User Interface named Modern UIEx. Modern UIEx is the same User Interface as the original Modern UI style but with the support of the new ultra-modern pages and with a little more options.

Using the Ultra-Modern UI macros and language files, writing scripts with a ultra-modern interface is easy. A lot of examples are available to show the different features and this document contains all information about writing Ultra-Modern UI scripts and a reference of all settings.

The issue of Ultra-Modern UI is to be the most compatible with the existing Modern UI scripts. Because of it is based on the Modern UI of Joost Verburg, it use the same macro a define and provide new one. The new macro and define use the prefix UMUI_ instead of MUI_.

Please be aware that the Ultra-Modern UI and the Modern UI interfaces settings are different compared to the classic interface. This means that you should not use settings like LicenseText, Icon, CheckBitmap, InstallColors etc. but the ones that are documented here.

Ultra-Modern UI include three NSIS plug-ins:

  • SkinnedControls: a plug-in, natively integrated to Ultra-Modern UI, to skin all buttons and scroll bars of your installer;
  • InstallOptionsEx: an extension, natively integrated to Ultra-Modern UI, of the original InstallOptions plug-in with more feature to create custom pages;
  • nsArray: needed by some Ultra-Modern UI features, provide less out-of-the-box arrays and map features.

[+] Screenshots

Multi language page with default skin Welcome page with blue skin with alternative text and alternative style options Maintenance page with blue2 skin with page background image option Update page with SoftBlue skin with page background image option License page with SoftRed skin Information page in RTF file with SoftBrown skin Setup type page Directory page with unique background image option Alternative start menu page with TreeView Additional tasks page with green skin Installer confirm page with red skin Abort page License page with the no left image option Directory page with the no left image option with SoftBule skin Welcome page with the small page option Directory page with the small page option Multi language page with the Modern UIEx interface Setup type page with the Modern UIEx interface Additional tasks page with the Modern UIEx interface Serial number page with the Modern UIEx interface

The colors, that are used in this document, correspond to the differences between Ultra-Modern UI / Modern UIEx and the original Modern UI:

  • BLACK:  macro and define that were the same;
  • RED:      macro and define that were removed;
  • BLUE:    macro and define that were added;
  • PURPLE: macro and define that were modified.

Writing Ultra-Modern UI Scripts

The Ultra-Modern UI has a macro system, so all the code to control the interface has already been written for you.

If you want to start a new Ultra-Modern UI script or upgrade an older script with the Modern UI or Classic UI, follow the steps below.

Taking a look at the example scripts will also help you to learn more about the Ultra-Modern UI.

Syntax

Some defines (e.g. MUI_COMPONENTSPAGE_SMALLDESC) don't need a value, they are true/false settings. Others (e.g. MUI_UI) can be used to define a specific value.

Parameters are specified in this format: required (option1 | option2) [optional]

Parameters for defined settings should be in one string:

!define MUI_COMPONENTSPAGE_SMALLDESC ;No value
!define MUI_UI "myUI.exe" ;Value
!define MUI_INSTFILESPAGE_COLORS "FFFFFF 000000" ;Multiple settings

If you want a certain value (e.g. a text) to be language-specific, set a language string (using LangString) and define $(STRINGNAME) as value. Use a license language string (LicenseLangString) for the license text.

If you want to add " to a Modern UI string, you should always escape it using $\" because the Modern UI macros use " to separate parameters.

1. Header file

If you want to upgrade your Modern UI script to the Ultra-Modern style, simply replace the line:

!include "MUI.nsh"

in your script by this one:

!include "UMUI.nsh"

Or this one if you want to use the Modern UIEx style (The extended version of Modern UI but with the support of the new Ultra-Modern pages):

!include "MUIEx.nsh"

UMUI.nsh and MUIEx.nsh are in the Include directory, so you don't have to specify a path.

Warning, if you use the .onGuiEnd or un.onGuiEnd functions in your script, see this link

2. Interface Configuration

Interface settings should be set before inserting page macros. Page interface settings apply to all pages of a certain type.

There are some difference between UMUI and MUIEx defined in particular on the default values:

[+] Interface Settings for Ultra-Modern UI

[+] Skin Setting

UMUI_SKIN skin_name
Use a skin. It contain a lot of interface settings defines. You can change a setting to redefining it.
You can also use a custom skin not included in the default skin folders. It can contain all the Interface Setting defines you need.
Default: none

Example of the "blue" skin:

!define /IfNDef MUI_TEXTCOLOR FFFFFF
!define /IfNDef MUI_BGCOLOR 4C72B2
!define /IfNDef UMUI_TEXT_LIGHTCOLOR FFFF00
!define /IfNDef UMUI_HEADERTEXT_COLOR FFFFFF
!define /IfNDef UMUI_BRANDINGTEXTFRONTCOLOR 8b8ca4
!define /IfNDef UMUI_BRANDINGTEXTBACKCOLOR eeeef3
!define /IfNDef UMUI_DISABLED_BUTTON_TEXT_COLOR 808080
!define /IfNDef UMUI_SELECTED_BUTTON_TEXT_COLOR 000080
!define /IfNDef UMUI_BUTTON_TEXT_COLOR 000000
!define /IfNDef UMUI_LEFTIMAGE_BMP \
    "${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Left.bmp"
!define /IfNDef UMUI_HEADERBGIMAGE_BMP \
    "${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Header.bmp"
!define /IfNDef UMUI_BOTTOMIMAGE_BMP \
    "${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Bottom.bmp"
!define /IfNDef UMUI_BUTTONIMAGE_BMP \
    "${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Button.bmp"
!define /IfNDef UMUI_SCROLLBARIMAGE_BMP \
    "${NSISDIR}\Contrib\UltraModernUI\Skins\blue\ScrollBar.bmp"
!define /IfNDef UMUI_PAGEBGIMAGE_BMP \
    "${NSISDIR}\Contrib\UltraModernUI\Skins\blue\PageBG.bmp"
!define /IfNDef MUI_WELCOMEFINISHPAGE_BITMAP \
    "${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Wizard.bmp"
!define /IfNDef MUI_ICON \
    "${NSISDIR}\Contrib\Graphics\UltraModernUI\Icon.ico"
!define /IfNDef MUI_UNICON \
    "${NSISDIR}\Contrib\Graphics\UltraModernUI\UnIcon.ico"

[+] BackGround Skin Setting

UMUI_USE_BG background_skin_name
Use a background skin. It contain two macro named "UMUI_BG" and "UMUI_BG_Destroy".
Default: none

UMUI_USE_CUSTOMBG
Use a custom background skin. don't forget to create two macro named "UMUI_BG" and "UMUI_BG_Destroy".

Example of a custom background skin:

!define UMUI_USE_CUSTOMBG

!macro UMUI_BG
  SetOutPath "$PLUGINSDIR"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\SpotlightBG.bmp"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\KeyBG.bmp"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\HeaderBG.bmp"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\BtmImgBG.bmp"
  BgImage::SetBg /GRADIENT 78 111 214 78 111 214
  BgImage::AddImage "$PLUGINSDIR\HeaderBG.bmp" 0 0
  BgImage::AddImage "$PLUGINSDIR\SpotlightBG.bmp" 0 57
  BgImage::AddImage "$PLUGINSDIR\BtmImgBG.bmp" 0 -70
  BgImage::AddImage "$PLUGINSDIR\KeyBG.bmp" -248 -351
  CreateFont $1 "Verdana" 30 700
  BgImage::AddText "$(^Name)" $1 8 51 155 15 70 -1 -1
  BgImage::AddText "$(^Name)" $1 255 255 255 10 65 -1 -1
  BgImage::Redraw
!macroend

!macro UMUI_BG_Destroy
  BgImage::Destroy
!macroend

[+] General Interface Settings

MUI_ICON icon_file
The icon for the installer.
Default: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Icon.ico

MUI_UNICON icon_file
The icon for the uninstaller.
Default: ${NSISDIR}\Contrib\Graphics\UltraModernUI\UnIcon.ico

MUI_HEADERIMAGE
Display an image on the header of the page.

MUI_HEADERIMAGE_BITMAP bmp_file
Bitmap image to display on the header of installers pages (recommended size: 150x57 pixels).
Default: ${NSISDIR}\Contrib\Graphics\Header\nsis.bmp

MUI_HEADERIMAGE_BITMAP_NOSTRETCH
Do not stretch the installer header bitmap to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_BITMAP_RTL bmp_file
Bitmap image to display on the header of installers pages when using a RTL language (recommended size: 150x57 pixels).
Default: Non-RTL bitmap

MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH
Do not stretch the installer header bitmap when using a RTL language to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_UNBITMAP bmp_file
Bitmap image to display on the header of uninstaller pages (recommended size: 150x57 pixels).
Default: Installer header bitmap

MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH
Do not stretch the uninstaller header bitmap to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_UNBITMAP_RTL bmp_file
Bitmap image to display on the header of uninstallers pages when using a RTL language (recommended size: 150x57 pixels).
Default: Installer RTL header bitmap

MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH
Do not stretch the uninstaller header bitmap when using a RTL language to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_RIGHT
Display the header image on the right side instead of the left side (when using a RTL language it will be displayed on the left side instead of the right side).

MUI_TEXTCOLOR (color: RRGGBBR hexadecimal)
Text color for all the pages. Default: FFFFFF

UMUI_TEXT_LIGHTCOLOR (color: RRGGBBR hexadecimal)
Text color for GroupBox and Link of all the pages.
Default: FFFF00

UMUI_TEXT_INPUTCOLOR (color: RRGGBBR hexadecimal)
Text color for input controls (except checkboxes and radio buttons) of all the pages.
Default: 000000

UMUI_BGINPUTCOLOR (color: RRGGBBR hexadecimal)
Background color for input controls (except checkboxes and radio buttons) of all the pages.
Default: FFFFFF

MUI_BGCOLOR (color: RRGGBBR hexadecimal)
Background color for all the pages.
Default: 4C72B2

UMUI_BRANDINGTEXTFRONTCOLOR (color: RRGGBBR hexadecimal)
Branding text front color for all the pages.
Default: 8b8ca4

UMUI_BRANDINGTEXTBACKCOLOR (color: RRGGBBR hexadecimal)
Branding text back color for all the pages.
Default: eeeef3

UMUI_HEADERTEXT_COLOR (color: RRGGBBR hexadecimal)
Header text color for all the pages.
Default: ${MUI_TEXTCOLOR}

MUI_HEADER_TRANSPARENT_TEXT
Set a transparent background for the header's label controls. Useful for custom user interfaces that set a bigger header image.

UMUI_HEADERBGIMAGE_BMP bmp_file
Bitmap image to display on the header of installers pages.
Default: ${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Header.bmp

UMUI_LEFTIMAGE_BMP bmp_file
Bitmap image to display on the left of installers pages.
Default: ${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Left.bmp

UMUI_BOTTOMIMAGE_BMP bmp_file
Bitmap image to display on the bottom of installers pages.
Default: ${NSISDIR}\Contrib\UltraModernUI\Skins\blue\BtmImg.bmp

UMUI_NOBOTTOMIMAGE
Don't draw the bottom Image of installers and uninstallers pages.

UMUI_UNIQUEBGIMAGE
Show a single full background image of installer.

UMUI_PAGEBGIMAGE
Show a background image on installers page.

UMUI_PAGEBGIMAGE_BMP bmp_file
Bitmap image for background of installers pages or single full bitmap image of installer.
Default: ${NSISDIR}\Contrib\UltraModernUI\Skins\blue\PageBG.bmp

UMUI_BUTTONIMAGE_BMP bmp_file
Bitmap image to skin all buttons of installer.
Default: ${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Button.bmp

UMUI_NO_BUTTONIMAGE
Don't skin buttons of installers and uninstaller.

UMUI_DISABLED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for disabled buttons of all the pages.
Default: 808080

UMUI_SELECTED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for selected buttons of all the pages.
Default: 000080

UMUI_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for normal buttons of all the pages.
Default: 000000

UMUI_SCROLLBARIMAGE_BMP bmp_file
Bitmap image to skin all scroll bars of installer.
Default: ${NSISDIR}\Contrib\UltraModernUI\Skins\blue\ScrollBar.bmp

UMUI_NO_SCROLLBARIMAGE
Don't skin scroll bars of installer and uninstaller.

UMUI_UNHEADERBGIMAGE_BMP bmp_file
Bitmap image to display on the header of uninstallers pages.
Default: ${UMUI_HEADERBGIMAGE_BMP}

UMUI_UNLEFTIMAGE_BMP bmp_file
Bitmap image to display on the left of uninstallers pages.
Default: ${UMUI_LEFTIMAGE_BMP}

UMUI_UNBOTTOMIMAGE_BMP bmp_file
Bitmap image to display on the bottom of uninstallers pages.
Default: ${UMUI_BOTTOMIMAGE_BMP}

UMUI_UNUNIQUEBGIMAGE
Show a single full background image of uninstaller.

UMUI_UNPAGEBGIMAGE
Show a background image on uninstallers page.

UMUI_UNPAGEBGIMAGE_BMP bmp_file
Bitmap image for background of uninstallers pages or single full bitmap image of uninstaller.
Default: ${UMUI_PAGEBGIMAGE_BMP}

UMUI_UNBUTTONIMAGE_BMP bmp_file
Bitmap image to skin all buttons of uninstaller.
Default: ${UMUI_BUTTONIMAGE_BMP}

UMUI_UNDISABLED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for disabled buttons of all the pages.
Default: ${UMUI_DISABLED_BUTTON_TEXT_COLOR}

UMUI_UNSELECTED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for selected buttons of all the pages.
Default: ${UMUI_SELECTED_BUTTON_TEXT_COLOR}

UMUI_UNBUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for normal buttons of all the pages.
Default: ${UMUI_BUTTON_TEXT_COLOR}

UMUI_UNSCROLLBARIMAGE_BMP bmp_file
Bitmap image to skin all scroll bars of uninstaller.
Default: ${UMUI_SCROLLBARIMAGE_BMP}

UMUI_BRANDINGTEXTFRONTCOLOR (color: RRGGBBR hexadecimal)
The front color of the bottom text. Use the BrandingText instruction to replace the default text.
Default: 8B8CA4

UMUI_BRANDINGTEXTBACKCOLOR (color: RRGGBBR hexadecimal)
The back color of the bottom text. It is shifted in comparison with the front text of one pixel to right and down below in order to give relief.
Default: EEEEF3

UMUI_XPSTYLE (On/Off)
Sets whether or not a XP visual style manifest will be added to the installer. This manifest makes the installers controls use the new visual styles when running on Windows XP and later. This affects the uninstaller too.
Default: Off

UMUI_ULTRAMODERN_SMALL
Use a small interface having the same size as Modern UI but with ultra-modern graphics.

UMUI_NOLEFTIMAGE
User an interface without the left image.

[+] Interface Resource Settings

UMUI_UI ui_file
The interface file with the dialog resources when the UMUI_ULTRAMODERN_SMALL option not defined. Change this if you have made your own customized UI.
The MUI_UI define has been renamed in Ultra-Modern UI in order to assure the compatibility with the former Modern UI scripts.
Default: ${NSISDIR}\Contrib\UIs\UltraModernUI\UltraModern.exe

UMUI_UI_SMALL ui_file
The interface file with the dialog resources when the UMUI_ULTRAMODERN_SMALL option defined. Change this if you have made your own customized UI.
Default: ${NSISDIR}\Contrib\UIs\UltraModernUI\UltraModern_small.exe

UMUI_UI_NOLEFTIMAGE ui_file
The interface file with the dialog resources IDD_INST when the UMUI_NOLEFTIMAGE option defined and the UMUI_ULTRAMODERN_SMALL option not defined. Change this if you have made your own customized UI.
Default: ${NSISDIR}\Contrib\UIs\UltraModernUI\UltraModern_noleftimage.exe

MUI_UI_HEADERIMAGE ui_file
The interface files with the dialog resource IDD_INST that contains a bitmap control and space for the header bitmap.
Default: ${NSISDIR}\Contrib\UIs\modern_headerbmp.exe

MUI_UI_HEADERIMAGE_RIGHT ui_file
The interface files with the dialog resource IDD_INST that contains a bitmap control and space for the header bitmap on the right side.
Default: ${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe

MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
The interface files with a customized dialog resource IDD_SELCOM with a small description area.
Default without UMUI_USE_SMALLPAGE option defined:
${NSISDIR}\Contrib\UIs\UltraModernUI\UltraModern_smalldesc.exe

Default with UMUI_USE_SMALLPAGE option defined:
${NSISDIR}\Contrib\UIs\UltraModernUI\modern_smalldesc.exe

MUI_UI_COMPONENTSPAGE_NODESC ui_file
The interface files with a customized dialog resource IDD_SELCOM without a description area.
Default without UMUI_USE_SMALLPAGE option defined:
${NSISDIR}\Contrib\UIs\UltraModernUI\UltraModern_nodesc.exe

Default with UMUI_USE_SMALLPAGE option defined:
${NSISDIR}\Contrib\UIs\UltraModernUI\modern_nodesc.exe

UMUI_UI_COMPONENTSPAGE_BIGDESC ui_file
The interface files with a customized dialog resource IDD_SELCOM with a big description area.
Default without UMUI_USE_SMALLPAGE option defined:
${NSISDIR}\Contrib\UIs\UltraModernUI\UltraModern_bigdesc.exe
Default with UMUI_USE_SMALLPAGE option defined:
${NSISDIR}\Contrib\UIs\UltraModernUI\modern_bigdesc.exe

[+] Welcome/Finish/Abort Pages Interface Settings

UMUI_USE_ALTERNATE_PAGE
Use an alternative Welcome page, Finish page and Abort page that looks like the most recent installers

UMUI_WELCOMEFINISHABORT_TITLE_FONTSIZE size
Use an alternative Welcome page, Finish page and Abort page that looks like the most recent installers
Default with UMUI_USE_ALTERNATE_PAGE option defined: 8
Default without UMUI_USE_ALTERNATE_PAGE option defined: 12

MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
Bitmap for the Welcome, the Finish and the Abort pages (recommended size: 164x314 pixels).
Default with UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option defined:
${NSISDIR}\Contrib\UltraModernUI\Skins\blue\Wizard.bmp
Default without UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option defined: none

MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
Do not stretch the bitmap for the Welcome, the Finish and the Abort pagesto fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE
Enable Bitmap for the Welcome, the Finish and the Abort pages.

[+] Welcome/Finish/Abort Pages InstallOptions INI Settings

UMUI_WELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the Welcome, the Finish and the Abort pages.
The MUI_WELCOMEFINISHPAGE_INI define has been renamed in Ultra-Modern UI in order to assure the compatibility with the former Modern UI scripts.
Default with UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbortImage.ini
Default without UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbort.ini

UMUI_ALTERNATEWELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the Alternate Welcome page, the Alternate Finish page and the Alternate Abort page.
Default with UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbortImage.ini
Default without UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbort.ini

[+] Uninstaller Welcome/Finish/Abort Pages Settings

UMUI_USE_UNALTERNATE_PAGE
Use an alternative Welcome page, Finish page and Abort page that looks like the most recent installers

MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
Bitmap for the Welcome, the Finish and the Abort pages (recommended size: 164x314 pixels).
Default : ${MUI_WELCOMEFINISHPAGE_BITMAP}

MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
Do not stretch the bitmap for the Welcome, the Finish and the Abort pagesto fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

[+] Uninstaller Welcome/Finish/Abort Pages Interface INI Settings

UMUI_UNWELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the uninstaller Welcome page, the Finish page and the Abort page.
The MUI_UNWELCOMEFINISHPAGE_INI define has been renamed in Ultra-Modern UI in order to assure the compatibility with the former Modern UI scripts.
Default with UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbortImage.ini
Default without UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbort.ini

UMUI_ALTERNATEUNWELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the uninstaller Alternate Welcome page, the Alternate Finish page and the Alternate Abort page.
Default with UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbortImage.ini
Default without UMUI_WELCOMEFINISHABORTPAGE_USE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbort.ini

[+] Maintenance/Update/SetupType Pages InstallOptions INI Settings

UMUI_MAINTENANCEUPDATESETUPTYPEPAGE_INI ini_file
InstallOptions INI file for the Maintenance, the Update and the SetupType pages.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\MaintenanceUpdateSetupType.ini

[+] Confirm Page InstallOptions INI Settings

UMUI_CONFIRMPAGE_INI ini_file
InstallOptions INI file for the Confirm page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\Confirm.ini

[+] Information Page InstallOptions INI Settings

UMUI_INFORMATIONPAGE_INI ini_file
InstallOptions INI file for the Information page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\Information.ini

[+] AdditionalTasks Page InstallOptions INI Settings

UMUI_ADDITIONALTASKSPAGE_INI ini_file
InstallOptions INI file for the AdditionalTasks page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\AdditionalTasks.ini

[+] SerialNumber Page InstallOptions INI Settings

UMUI_SERIALNUMBERPAGE_INI ini_file
InstallOptions INI file for the SerialNumber page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\SerialNumber.ini

[+] AlternativeStartMenu Page InstallOptions INI Settings

UMUI_ALTERNATIVESTARTMENUPAGE_INI ini_file
InstallOptions INI file for the AlternativeStartMenu page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\AlternativeStartMenu.ini

[+] License Page Interface Settings

MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (color: RRGGBB hexadecimal))
The background color for the license textbox. Use /windows for the Windows text background color (usually white). Use the /grey for the window background color (usually grey).
Default: /windows

[+] Components Page Interface Settings

MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file
The bitmap with images for the checks of the component select treeview.
Default: ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp

MUI_COMPONENTSPAGE_SMALLDESC
A small description area on the bottom of the page. Use this layout if you have a lot of sections and don't need large descriptions.

MUI_COMPONENTSPAGE_NODESC
No description area.

UMUI_COMPONENTSPAGE_BIGDESC
A big description area on the bottom of the page. Use this layout if you have a lot of sections and need large descriptions.

UMUI_ENABLE_DESCRIPTION_TEXT ini_file
Enable the description text when the mouse is not positionned over a component.

[+] Installation Page Interface Settings

MUI_INSTFILESPAGE_COLORS (/windows | (foreground color: RRGGBB hexadecimal) (background color: RRGGBB hexadecimal))
The colors of the details screen. Use /windows for the default Windows colors.
Default: ${MUI_TEXTCOLOR} ${MUI_BGCOLOR}

MUI_INSTFILESPAGE_PROGRESSBAR ("" | colored | smooth)
The style of the progress bar. Colored makes it use the MUI_INSTALLCOLORS.
Default: smooth

[+] Installer Finish Page Interface Settings

MUI_FINISHPAGE_NOAUTOCLOSE
Do not automatically jump to the finish page, to allow the user to check the install log.

[+] Uninstaller Finish Page Interface Settings

MUI_UNFINISHPAGE_NOAUTOCLOSE
Do not automatically jump to the finish page, to allow the user to check the uninstall log.

[+] Abort Warning Settings

MUI_ABORTWARNING
Show a message box with a warning when the user wants to close the installer.

MUI_ABORTWARNING_TEXT text
Text to display on the abort warning messagebox.

MUI_ABORTWARNING_CANCEL_DEFAULT
Set the Cancel button as the default button on the message box.

[+] Uninstaller Abort Warning Settings

MUI_UNABORTWARNING
Show a message box with a warning when the user wants to close the uninstaller.

MUI_UNABORTWARNING_TEXT text
Text to display on the abort warning messagebox.

MUI_UNABORTWARNING_CANCEL_DEFAULT
Set the Cancel button as the default button on the message box.

[+] Interface Settings for Modern UIEx

[+] BackGround Skin Setting

UMUI_USE_BG bgskin_name
Use a background skin. It contain two macro named "UMUI_BG" and "UMUI_BG_Destroy".
Default: none

UMUI_USE_CUSTOMBG
Use a custom background skin. don't forget to create two macro named "UMUI_BG" and "UMUI_BG_Destroy".

Example of a custom background skin:

!define UMUI_USE_CUSTOMBG

!macro UMUI_BG
  SetOutPath "$PLUGINSDIR"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\SpotlightBG.bmp"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\KeyBG.bmp"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\HeaderBG.bmp"
  File "${NSISDIR}\Contrib\UltraModernUI\BGSkins\wxp\BtmImgBG.bmp"
  BgImage::SetBg /GRADIENT 78 111 214 78 111 214
  BgImage::AddImage "$PLUGINSDIR\HeaderBG.bmp" 0 0
  BgImage::AddImage "$PLUGINSDIR\SpotlightBG.bmp" 0 57
  BgImage::AddImage "$PLUGINSDIR\BtmImgBG.bmp" 0 -70
  BgImage::AddImage "$PLUGINSDIR\KeyBG.bmp" -248 -351
  CreateFont $1 "Verdana" 30 700
  BgImage::AddText "$(^Name)" $1 8 51 155 15 70 -1 -1
  BgImage::AddText "$(^Name)" $1 255 255 255 10 65 -1 -1
  BgImage::Redraw
!macroend

!macro UMUI_BG_Destroy
  BgImage::Destroy
!macroend

[+] General Interface Settings

MUI_ICON icon_file
The icon for the installer.
Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico

MUI_UNICON icon_file
The icon for the uninstaller.
Default: ${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico

MUI_HEADERIMAGE
Display an image on the header of the page.

MUI_HEADERIMAGE_BITMAP bmp_file
Bitmap image to display on the header of installers pages (recommended size: 150x57 pixels).
Default: ${NSISDIR}\Contrib\Graphics\Header\nsis.bmp

MUI_HEADERIMAGE_BITMAP_NOSTRETCH
Do not stretch the installer header bitmap to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_BITMAP_RTL bmp_file
Bitmap image to display on the header of installers pages when using a RTL language (recommended size: 150x57 pixels).
Default: Non-RTL bitmap

MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH
Do not stretch the installer header bitmap when using a RTL language to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_UNBITMAP bmp_file
Bitmap image to display on the header of uninstaller pages (recommended size: 150x57 pixels).
Default: Installer header bitmap

MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH
Do not stretch the uninstaller header bitmap to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_UNBITMAP_RTL bmp_file
Bitmap image to display on the header of uninstallers pages when using a RTL language (recommended size: 150x57 pixels).
Default: Installer RTL header bitmap

MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH
Do not stretch the uninstaller header bitmap when using a RTL language to fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

MUI_HEADERIMAGE_RIGHT
Display the header image on the right side instead of the left side (when using a RTL language it will be displayed on the left side instead of the right side).

UMUI_HEADERBGIMAGE
Display a background image on the header of the page.

UMUI_NOHEADERBGIMAGE
Hide the background image on the header of the page.

UMUI_HEADERBGIMAGE_BMP bmp_file
Bitmap image to display on the header of installers pages (recommended size: 497*59 pixels).
Default: ${NSISDIR}\Contrib\Graphics\Header\UltraModernUI\HeaderBG.bmp"

UMUI_UNHEADERBGIMAGE_BMP bmp_file
Bitmap image to display on the header of installers pages (recommended size: 497*59 pixels).
Default: ${UMUI_HEADERBGIMAGE_BMP}"

MUI_TEXTCOLOR (color: RRGGBBR hexadecimal)
Text color for all the pages. Default: 000000

UMUI_TEXT_LIGHTCOLOR (color: RRGGBBR hexadecimal)
Default link color for finish and abort pages.
Default: 000000

UMUI_TEXT_INPUTCOLOR (color: RRGGBBR hexadecimal)
Text color for input controls (except checkboxes and radio buttons) of all the pages.
Default: 000000

UMUI_BGINPUTCOLOR (color: RRGGBBR hexadecimal)
Background color for input controls (except checkboxes and radio buttons) of all the pages.
Default: FFFFFF

MUI_BGCOLOR (color: RRGGBBR hexadecimal)
Background color for the header, the Welcome, the Finish and the Abort pages.
Default: FFFFFF

UMUI_HEADERTEXT_COLOR (color: RRGGBBR hexadecimal)
Header text color for all the pages.
Default: ${MUI_TEXTCOLOR}

UMUI_BUTTONIMAGE_BMP bmp_file
Bitmap image to skin all buttons of installer.
Default: none

UMUI_DISABLED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for disabled buttons of all the pages.
Default: 808080

UMUI_SELECTED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for selected buttons of all the pages.
Default: 000080

UMUI_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for normal buttons of all the pages.
Default: 000000

UMUI_SCROLLBARIMAGE_BMP bmp_file
Bitmap image to skin all scroll bars of installer.
Default: none

UMUI_UNBUTTONIMAGE_BMP bmp_file
Bitmap image to skin all buttons of uninstaller.
Default: none

UMUI_UNDISABLED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for disabled buttons of all the pages.
Default: ${UMUI_DISABLED_BUTTON_TEXT_COLOR}

UMUI_UNSELECTED_BUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for selected buttons of all the pages.
Default: ${UMUI_SELECTED_BUTTON_TEXT_COLOR}

UMUI_UNBUTTON_TEXT_COLOR (color: RRGGBBR hexadecimal)
Text color for normal buttons of all the pages.
Default: ${UMUI_BUTTON_TEXT_COLOR}

UMUI_UNSCROLLBARIMAGE_BMP bmp_file
Bitmap image to skin all scroll bars of uninstaller.
Default: none

MUI_HEADER_TRANSPARENT_TEXT
Set a transparent background for the header's label controls. Useful for custom user interfaces that set a bigger header image.

UMUI_XPSTYLE (On/Off)
Sets whether or not a XP visual style manifest will be added to the installer. This manifest makes the installers controls use the new visual styles when running on Windows XP and later. This affects the uninstaller too.
Default with UMUI_BUTTONIMAGE_BMP|UMUI_UNBUTTONIMAGE_BMP option defined: Off
Default without UMUI_BUTTONIMAGE_BMP&UMUI_UNBUTTONIMAGE_BMP option defined: On

[+] Interface Resource Settings

MUI_UI ui_file
The interface file with the dialog resources. Change this if you have made your own customized UI.
Default: ${NSISDIR}\Contrib\UIs\modern.exe

MUI_UI_HEADERIMAGE ui_file
The interface files with the dialog resource IDD_INST that contains a bitmap control and space for the header bitmap.
Default: ${NSISDIR}\Contrib\UIs\modern_headerbmp.exe

MUI_UI_HEADERIMAGE_RIGHT ui_file
The interface files with the dialog resource IDD_INST that contains a bitmap control and space for the header bitmap on the right side.
Default: ${NSISDIR}\Contrib\UIs\modern_headerbmpr.exe

UMUI_UI_HEADERBGIMAGE ui_file
The interface files with the dialog resource IDD_INST that contains a bitmap control for the header background bitmap.
Default: ${NSISDIR}\Contrib\UIs\UltraModernUI\modern_headerbgimage.exe

MUI_UI_COMPONENTSPAGE_SMALLDESC ui_file
The interface files with a customized dialog resource IDD_SELCOM with a small description area.
Default: ${NSISDIR}\Contrib\UIs\modern_smalldesc.exe

MUI_UI_COMPONENTSPAGE_NODESC ui_file
The interface files with a customized dialog resource IDD_SELCOM without a description area.
Default: ${NSISDIR}\Contrib\UIs\modern_nodesc.exe

UMUI_UI_COMPONENTSPAGE_BIGDESC ui_file
The interface files with a customized dialog resource IDD_SELCOM with a big description area.
Default: ${NSISDIR}\Contrib\UIs\UltraModernUI\modern_bigdesc.exe

[+] Welcome/Finish/Abort Pages Interface Settings

UMUI_USE_ALTERNATE_PAGE
Use an alternative Welcome page, Finish page and Abort page that looks like the most recent installers

UMUI_WELCOMEFINISHABORT_TITLE_FONTSIZE size
Use an alternative Welcome page, Finish page and Abort page that looks like the most recent installers
Default with UMUI_USE_ALTERNATE_PAGE option defined: 8
Default without UMUI_USE_ALTERNATE_PAGE option defined: 12

MUI_WELCOMEFINISHPAGE_BITMAP bmp_file
Bitmap for the Welcome, the Finish and the Abort pages (recommended size: 164x314 pixels).
Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH
Do not stretch the bitmap for the Welcome, the Finish and the Abort pagesto fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE
Disable Bitmap for the Welcome, the Finish and the Abort pages.

[+] Welcome/Finish/Abort Pages InstallOptions INI Settings

UMUI_WELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the Welcome, the Finish and the Abort pages.
The MUI_WELCOMEFINISHPAGE_INI define has been renamed in Ultra-Modern UI in order to assure the compatibility with the former Modern UI scripts.
Default without UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbortImage.ini
Default with UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbort.ini

UMUI_ALTERNATEWELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the Alternate Welcome page, the Alternate Finish page and the Alternate Abort page.
Default without UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbortImage.ini
Default with UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbort.ini

[+] Uninstaller Welcome/Finish/Abort Pages Settings

UMUI_USE_UNALTERNATE_PAGE
Use an alternative Welcome page, Finish page and Abort page that looks like the most recent installers

MUI_UNWELCOMEFINISHPAGE_BITMAP bmp_file
Bitmap for the Welcome, the Finish and the Abort pages (recommended size: 164x314 pixels).
Default: ${NSISDIR}\Contrib\Graphics\Wizard\win.bmp

MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH
Do not stretch the bitmap for the Welcome, the Finish and the Abort pagesto fit the size of the field. Use this option only if you have an image that does not use the whole space. If you have a full size bitmap that fits exactly, you should not use this option because the size of the field will be different if the user has a custom DPI setting.

[+] Uninstaller Welcome/Finish/Abort Pages Interface INI Settings

UMUI_UNWELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the uninstaller Welcome page, the Finish page and the Abort page.
The MUI_UNWELCOMEFINISHPAGE_INI define has been renamed in Ultra-Modern UI in order to assure the compatibility with the former Modern UI scripts.
Default without UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbortImage.ini
Default with UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\WelcomeFinishAbort.ini

UMUI_ALTERNATEUNWELCOMEFINISHABORTPAGE_INI ini_file
InstallOptions INI file for the uninstaller Alternate Welcome page, the Alternate Finish page and the Alternate Abort page.
Defaultout with UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbortImage.ini
Default with UMUI_WELCOMEFINISHABORTPAGE_NOTUSE_IMAGE option enabled:
${NSISDIR}\Contrib\UltraModernUI\Ini\AlternateWelcomeFinishAbort.ini

[+] Maintenance/Update/SetupType Pages InstallOptions INI Settings

UMUI_MAINTENANCEUPDATESETUPTYPEPAGE_INI ini_file
InstallOptions INI file for the Maintenance, the Update and the SetupType pages.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\MaintenanceUpdateSetupType.ini

[+] Confirm Page InstallOptions INI Settings

UMUI_CONFIRMPAGE_INI ini_file
InstallOptions INI file for the Confirm page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\Confirm.ini

[+] Information Page InstallOptions INI Settings

UMUI_INFORMATIONPAGE_INI ini_file
InstallOptions INI file for the Information page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\Information.ini

[+] AdditionalTasks Page InstallOptions INI Settings

UMUI_ADDITIONALTASKSPAGE_INI ini_file
InstallOptions INI file for the AdditionalTasks page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\AdditionalTasks.ini

[+] SerialNumber Page InstallOptions INI Settings

UMUI_SERIALNUMBERPAGE_INI ini_file
InstallOptions INI file for the SerialNumber page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\SerialNumber.ini

[+] AlternativeStartMenu Page InstallOptions INI Settings

UMUI_ALTERNATIVESTARTMENUPAGE_INI ini_file
InstallOptions INI file for the AlternativeStartMenu page.
Default: ${NSISDIR}\Contrib\UltraModernUI\Ini\AlternativeStartMenu.ini

[+] License Page Interface Settings

MUI_LICENSEPAGE_BGCOLOR (/windows | /grey | (color: RRGGBB hexadecimal))
The background color for the license textbox. Use /windows for the Windows text background color (usually white). Use the /grey for the window background color (usually grey).
Default: /windows

[+] Components Page Interface Settings

MUI_COMPONENTSPAGE_CHECKBITMAP bitmap_file
The bitmap with images for the checks of the component select treeview.
Default: ${NSISDIR}\Contrib\Graphics\Checks\modern.bmp

MUI_COMPONENTSPAGE_SMALLDESC
A small description area on the bottom of the page. Use this layout if you have a lot of sections and don't need large descriptions.

MUI_COMPONENTSPAGE_NODESC
No description area.

UMUI_COMPONENTSPAGE_BIGDESC
A big description area on the bottom of the page. Use this layout if you have a lot of sections and need large descriptions.

[+] Installation Page Interface Settings

MUI_INSTFILESPAGE_COLORS (/windows | (foreground color: RRGGBB hexadecimal) (background color: RRGGBB hexadecimal))
The colors of the details screen. Use /windows for the default Windows colors.
Default: /windows

MUI_INSTFILESPAGE_PROGRESSBAR ("" | colored | smooth)
The style of the progress bar. Colored makes it use the MUI_INSTALLCOLORS.
Default: smooth

[+] Installer Finish Page Interface Settings

MUI_FINISHPAGE_NOAUTOCLOSE
Do not automatically jump to the finish page, to allow the user to check the install log.

[+] Uninstaller Finish Page Interface Settings

MUI_UNFINISHPAGE_NOAUTOCLOSE
Do not automatically jump to the finish page, to allow the user to check the uninstall log.

[+] Abort Warning Settings

MUI_ABORTWARNING
Show a message box with a warning when the user wants to close the installer.

MUI_ABORTWARNING_TEXT text
Text to display on the abort warning messagebox.

MUI_ABORTWARNING_CANCEL_DEFAULT
Set the Cancel button as the default button on the message box.

[+] Uninstaller Abort Warning Settings

MUI_UNABORTWARNING
Show a message box with a warning when the user wants to close the uninstaller.

MUI_UNABORTWARNING_TEXT text
Text to display on the abort warning messagebox.

MUI_UNABORTWARNING_CANCEL_DEFAULT
Set the Cancel button as the default button on the message box.

3. Pages

Insert the following macros to set the pages you want to use. The pages will appear in the order you insert them in your script. You can also insert custom Page commands between the macros to add custom pages. More info about custom pages...

You can add multiple pages of certain types (for example, if you want the user to specify multiple folders).

Examples:

!insertmacro MUI_PAGE_LICENSE "License.rtf"
!insertmacro MUI_PAGE_COMPONENTS
Var STARTMENU_FOLDER
!insertmacro MUI_PAGE_STARTMENU "Application" $STARTMENU_FOLDER

You will need the page ID for the Start Menu Folder page when using the Start Menu Folder macros. The Start Menu Folder will be stored in the specified variable.

Installer Pages:
  • UMUI_PAGE_MULTILANGUAGE
  • UMUI_PAGE_MAINTENANCE
  • UMUI_PAGE_UPDATE
  • MUI_PAGE_WELCOME
  • MUI_PAGE_LICENSE text/rtf_file
  • UMUI_PAGE_INFORMATION text/rtf_files
  • UMUI_PAGE_SERIALNUMBER function
  • UMUI_PAGE_SETUPTYPE
  • MUI_PAGE_COMPONENTS
  • MUI_PAGE_DIRECTORY
  • MUI_PAGE_STARTMENU page_id variable
  • UMUI_PAGE_ALTERNATIVESTARTMENU page_id variable
  • UMUI_PAGE_ADDITIONALTASKS function
  • UMUI_PAGE_CONFIRM
  • UMUI_PAGE_FILEDISKREQUEST
  • MUI_PAGE_INSTFILES
  • MUI_PAGE_FINISH
  • UMUI_PAGE_ABORT
Uninstaller Pages:
  • UMUI_UNPAGE_MULTILANGUAGE
  • UMUI_UNPAGE_MAINTENANCE
  • MUI_UNPAGE_WELCOME
  • MUI_UNPAGE_CONFIRM
  • MUI_UNPAGE_LICENSE text/rtf_file
  • UMUI_UNPAGE_INFORMATION text/rtf_files
  • UMUI_UNPAGE_SERIALNUMBER un.function
  • UMUI_UNPAGE_SETUPTYPE
  • MUI_UNPAGE_COMPONENTS
  • MUI_UNPAGE_DIRECTORY
  • UMUI_UNPAGE_ADDITIONALTASKS page_id un.function
  • UMUI_UNPAGE_CONFIRM
  • UMUI_UNPAGE_FILEDISKREQUEST
  • MUI_UNPAGE_INSTFILES
  • MUI_UNPAGE_FINISH
  • UMUI_UNPAGE_ABORT

[+] Page Settings

Page settings apply to a single page and should be set before inserting a page macro. You have to repeat the setting if you want it to apply to multiple pages. Example:

;Add a directory page to let the user specify a plug-ins folder
;Store the folder in $PLUGINS_FOLDER
Var PLUGINS_FOLDER
!define MUI_DIRECTORYPAGE_VARIABLE $PLUGINS_FOLDER
!insertmacro MUI_PAGE_DIRECTORY

Note: There is no difference between installer and uninstaller page settings.

[+] General Page Settings

MUI_PAGE_HEADER_TEXT text
Text to display on the header of the page.

MUI_PAGE_HEADER_SUBTEXT text
Subtext to display on the header of the page.

UMUI_PREUNINSTALL_FUNCTION function
A function to remove already installed files, but keeping configuration files and registery keys, executed before the installation itself. Useful in repair, modify and update mode or when user uncheck already installed components.

UMUI_PARAMS_REGISTRY_ROOT root
UMUI_PARAMS_REGISTRY_KEY key
The default registry key to store diverse values. Some pages will use it to remember the selected values. Don't forget to remove this key during uninstallation.

UMUI_INSTALLDIR_REGISTRY_ROOT root
UMUI_INSTALLDIR_REGISTRY_KEY key
UMUI_INSTALLDIR_REGISTRY_VALUENAME value_name
The registry key to store the $INSTDIR variable. This replace the InstallDirRegKey instruction. This value will be automatically saved to the registry on install success. Don't forget to remove this key during uninstallation.
UMUI_INSTALLDIR_REGISTRY_ROOT and UMUI_INSTALLDIR_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

UMUI_DEFAULT_SHELLVARCONTEXT (all/current)
Set the default context of $SMPROGRAMS and other shell folders. If set to 'current' (the default), the current user's shell folders are used. If set to 'all', the 'all users' shell folder is used. The all users folder may not be supported on all OSes. If the all users folder is not found, the current user folder will be used. Please take into consideration that a "normal user" has no rights to write in the all users area. Only admins have full access rights to the all users area. You can check this by using the UserInfo plug-in. See Contrib\UserInfo\UserInfo.nsi for an example.

UMUI_SHELLVARCONTEXT_REGISTRY_ROOT root
UMUI_SHELLVARCONTEXT_REGISTRY_KEY key
UMUI_SHELLVARCONTEXT_REGISTRY_VALUENAME value_name
The registry key to store the ShellVarContext (current|all). Useful if the user has the option to choose through the AlternativeStartMenu page or the AddistionalTasks page. This value will be automatically saved to the registry on install success. Don't forget to remove this key during uninstallation.
UMUI_SHELLVARCONTEXT_REGISTRY_ROOT and UMUI_SHELLVARCONTEXT_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

You can use these macros to add value to save automatically to the registry on install success. Don't forget to remove this key during uninstallation.
UMUI_ADDPARAMTOSAVETOREGISTRY registry_root registry_key value_name data
UMUI_ADDPARAMTOSAVETOREGISTRY value_name data
The last one required the UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY parameters to be defined.

[+] MultiLanguage Page Settings

UMUI_MULTILANGUAGEPAGE_TITLE title
Title to display on the top of the page.

UMUI_MULTILANGUAGEPAGE_TITLE_3LINES
Extra space for the title area.
It is not used in the alternate welcome page.

UMUI_MULTILANGUAGEPAGE_TEXT text
Text to display on the page. Use \r\n for a newline.

UMUI_MULTILANGUAGEPAGE_LANGUAGE text
Text to display on the language frame.

UMUI_LANGUAGE_ALWAYSSHOW
Always show the language selection dialog, even if a language has been stored in the registry. The language stored in the registry will be selected by default.

UMUI_LANGUAGE_REGISTRY_ROOT root
UMUI_LANGUAGE_REGISTRY_KEY key
UMUI_LANGUAGE_REGISTRY_VALUENAME value_name
The registry key to store the language. The users preference will be remembered. You can also use it for the uninstaller to display the right language. This value will be automatically saved to the registry on install success. Don't forget to remove this key in the uninstaller.
UMUI_LANGUAGE_REGISTRY_ROOT and UMUI_LANGUAGE_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

Insert the Modern UI language files for the languages to want to include:

!insertmacro MUI_LANGUAGE "English"

For the installer and the uninstaller, insert the UMUI_MULTILANG_GET macro in .onInit and un.onInit fuctions to get the stored language list:

Function .onInit
!insertmacro UMUI_MULTILANG_GET
FunctionEnd
Function un.onInit
!insertmacro UMUI_MULTILANG_GET
FunctionEnd

If you need to use the instruction "SetRegView 64", it must be inserted in the (un).onInit functions and before the UMUI_MULTILANG_GET macro insertions.

[+] Maintenance Page Settings

This page is shown only when the product is already installed in the same version. It draw radio buttons usualy named Modify, Repair, Remove and Continue setup. If Repair is selected, the Components, Directory and StartMenu pages are skipped.
To work, the UMUI_VERBUILD_REGISTRY_VALUENAME and the UMUI_VERBUILD parameters are required but also, the UMUI_INSTALLERFULLPATH_REGISTRY_VALUENAME, the UMUI_COMPONENTSPAGE_REGISTRY_VALUENAME and optionally the UMUI_COMPONENTSPAGE_INSTTYPE_REGISTRY_VALUENAME parameter of the Component Page.

UMUI_MAINTENANCEPAGE_TEXT text
Text to display on the top of the page.

UMUI_MAINTENANCEPAGE_MODIFY
Enable the modify option.

UMUI_MAINTENANCEPAGE_MODIFY_TITLE text
Title of the modify radiobutton.

UMUI_MAINTENANCEPAGE_MODIFY_TEXT text
Text to display under the modify radiobutton.

UMUI_MAINTENANCEPAGE_MODIFYBITMAP bmp_file
Bitmap image to display under the modify radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Modify.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\ModifyEx.bmp

UMUI_MAINTENANCEPAGE_REPAIR
Enable the repair option.

UMUI_MAINTENANCEPAGE_REPAIR_TITLE text
Title of the repair radiobutton.

UMUI_MAINTENANCEPAGE_REPAIR_TEXT text
Text to display under the repair radiobutton.

UMUI_MAINTENANCEPAGE_REPAIRBITMAP bmp_file
Bitmap image to display under the repair radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Repair.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\RepairEx.bmp

UMUI_MAINTENANCEPAGE_REMOVE
Enable the remove option.

UMUI_MAINTENANCEPAGE_REMOVE_TITLE text
Title of the remove radiobutton.

UMUI_MAINTENANCEPAGE_REMOVE_TEXT text
Text to display under the remove radiobutton.

UMUI_MAINTENANCEPAGE_REMOVEBITMAP bmp_file
Bitmap image to display under the remove radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Remove.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\RemoveEx.bmp

UMUI_MAINTENANCEPAGE_CONTINUE_SETUP
Enable the continue setup option.

UMUI_MAINTENANCEPAGE_CONTINUE_SETUP_TITLE text
Title of the continue setup radiobutton.

UMUI_MAINTENANCEPAGE_CONTINUE_SETUP_TEXT text
Text to display under the continue setup radiobutton.

UMUI_MAINTENANCEPAGE_CONTINUE_SETUPBITMAP bmp_file
Bitmap image to display under the continue setup radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Continue.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\ContinueEx.bmp

UMUI_MAINTENANCEPAGE_DEFAULTCHOICE flag
The default selected flag: must be one of ${UMUI_MODIFY}, ${UMUI_REPAIR}, ${UMUI_REMOVE} or ${UMUI_CONTINUE_SETUP}
Default: ${UMUI_MODIFY}

[+] Update Page Settings

This page is shown only when the product is already installed in a different version. It draw radio buttons usualy named Update, Remove and Continue setup. If Update is selected, the Components, Directory and StartMenu pages are skipped.
To work, the UMUI_VERBUILD_REGISTRY_VALUENAME and the UMUI_VERBUILD parameters are required but also, the UMUI_COMPONENTSPAGE_REGISTRY_VALUENAME and optionally the UMUI_COMPONENTSPAGE_INSTTYPE_REGISTRY_VALUENAME parameter of the Component Page.

UMUI_UPDATEPAGE_TEXT text
Text to display on the top of the page.

UMUI_UPDATEPAGE_UPDATE_TITLE text
Title of the update radiobutton.

UMUI_UPDATEPAGE_UPDATE_TEXT text
Text to display under the update radiobutton.

UMUI_UPDATEPAGE_UPDATEBITMAP bmp_file
Bitmap image to display under the update radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Update.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\UpdateEx.bmp

UMUI_UPDATEPAGE_REMOVE
Enable the remove option.

UMUI_UPDATEPAGE_REMOVE_TITLE text
Title of the remove radiobutton.

UMUI_UPDATEPAGE_REMOVE_TEXT text
Text to display under the remove radiobutton.

UMUI_UPDATEPAGE_REMOVEBITMAP bmp_file
Bitmap image to display under the remove radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Remove.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\RemoveEx.bmp

UMUI_UPDATEPAGE_CONTINUE_SETUP
Enable the continue setup option.

UMUI_UPDATEPAGE_CONTINUE_SETUP_TITLE text
Title of the continue setup radiobutton.

UMUI_UPDATEPAGE_CONTINUE_SETUP_TEXT text
Text to display under the continue setup radiobutton.

UMUI_UPDATEPAGE_CONTINUE_SETUPBITMAP bmp_file
Bitmap image to display under the continue setup radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Continue.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\ContinueEx.bmp

UMUI_UPDATEPAGE_DEFAULTCHOICE flag
The default selected flag: must be one of ${UMUI_UPDATE}, ${UMUI_REPAIR}, ${UMUI_REMOVE} or ${UMUI_CONTINUE_SETUP}
Default: ${UMUI_CONTINUE_SETUP}

[+] License Page Settings

MUI_LICENSEPAGE_TEXT_TOP text
Text to display on the top of the page.

MUI_LICENSEPAGE_TEXT_BOTTOM text
Text to display on the bottom of the page.

MUI_LICENSEPAGE_BUTTON button_text
Text to display on the 'I Agree' button.

MUI_LICENSEPAGE_CHECKBOX
Display a checkbox the user has to check to agree with the license terms.

MUI_LICENSEPAGE_CHECKBOX_TEXT text
Text to display next to the checkbox to agree with the license terms.

MUI_LICENSEPAGE_RADIOBUTTONS
Display two radio buttons to allow the user to choose between accepting the license terms or not.

MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT text
Text to display next to the checkbox to accept the license terms.

MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE text
Text to display next to the checkbox to decline the license terms.

[+] Information Page Settings

The pages display a single or multiple textes files or Richtext RTF files.
File name may contains a * which will be replaced by the language code. For example:
"information1033.txt" will be displayed for english and "information1036.txt" for french.
Optional "information.txt" for untranslated language files (if "informationXXXX.txt" not found).
Text files support the UTF16LE charset only if the Unicode True instruction set or an ANSI charset.

UMUI_INFORMATIONPAGE_TEXT text
Text to display on the top of the page.

UMUI_INFORMATIONPAGE_USE_RICHTEXTFORMAT
Information file(s) is/are in RichText RTF format.

[+] SerialNumber Page Settings

UMUI_SERIALNUMBERPAGE_TEXT_TOP text
Text to display on the top of the page.

The page take a function in parameter containing some macro to add elements on the page. Example:

Function serial_function

;Get the windows name and organisation
!insertmacro UMUI_SERIALNUMBERPAGE_GET_WINDOWS_REGISTRED_OWNER R0
!insertmacro UMUI_SERIALNUMBERPAGE_GET_WINDOWS_REGISTRED_ORGANIZATION R1

StrCpy $R2 "11111-22222-33333-44444-55555"

  !define UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_VALUENAME "RegName"
!insertmacro UMUI_SERIALNUMBERPAGE_ADD_LABELEDSERIAL \
    REGNAME      0 "TOUPPER"           $R0 "$(UMUI_TEXT_SERIALNUMBER_NAME)"

  !define UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_VALUENAME "Organisation"
!insertmacro UMUI_SERIALNUMBERPAGE_ADD_LABELEDSERIAL \
    ORGANISATION 0 "CANBEEMPTY|TOLOWER" $R1 "$(UMUI_TEXT_SERIALNUMBER_ORGANIZATION)"

!insertmacro UMUI_SERIALNUMBERPAGE_ADD_HLINE

  !define UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_VALUENAME "SerialNumber"
!insertmacro UMUI_SERIALNUMBERPAGE_ADD_LABELEDSERIAL \
    SERIAL     55555 "NUMBERS|NODASHS" $R2 "$(UMUI_TEXT_SERIALNUMBER_SERIALNUMBER)"

FunctionEnd

UMUI_SERIALNUMBERPAGE_GET_WINDOWS_REGISTRED_OWNER default
Macro to get the windows registered user;
UMUI_SERIALNUMBERPAGE_GET_WINDOWS_REGISTRED_ORGANIZATION default
Macro to get the windows registered organization;
UMUI_SERIALNUMBERPAGE_ADD_LABEL text
Macro to add a text;
UMUI_SERIALNUMBERPAGE_ADD_SERIAL serialID type flags default
UMUI_SERIALNUMBERPAGE_ADD_LABELEDSERIAL serialID type flags default text
Two macros to add an input with label. Parameters are:
serialID: A unique identifiant for this serial number
type: How many chars and how many inputs to show on the line. Example: 555 for 3 inputs of 5 characters each, 0 for unlimited chars
flags: Can be one or many (separated by |) of "", NODASHS, TOUPPER, TOLOWER, NUMBERS, CANBEEMPTY
default: The défault value if not already saved in the registry.
            Example XXXXX-XXXXX-XXXXX or XXXXXXXXXXXXXXX
A define are available on these macro :
UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_ROOT root
UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_KEY key
UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_VALUENAME value_name
The registry key to store the value. This value will be automatically saved to the registry on install success. Don't forget to remove this key in the uninstaller.
UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_ROOT and UMUI_SERIALNUMBERPAGE_SERIAL_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

Use the UMUI_SERIALNUMBER_GET serialID variable macro to get the value.

[+] SetupType Page Settings

This page draw radio buttons usualy named Minimal, Standard, Complete and Custom. If Custom is not selected, the Components, Directory and StartMenu pages are skipped.

UMUI_SETUPTYPEPAGE_TEXT text
Text to display on the top of the page.

UMUI_SETUPTYPEPAGE_MINIMAL InstTypeName
Enable the minimal option. The InstTypeName must correspond to an existing InstType declaration. Typically:

!define UMUI_SETUPTYPEPAGE_MINIMAL "$(UMUI_TEXT_SETUPTYPE_MINIMAL_TITLE)"
InstType "$(UMUI_TEXT_SETUPTYPE_MINIMAL_TITLE)"

UMUI_SETUPTYPEPAGE_MINIMAL_TITLE text
Title of the minimal radiobutton.

UMUI_SETUPTYPEPAGE_MINIMAL_TEXT text
Text to display under the minimal radiobutton.

UMUI_SETUPTYPEPAGE_MINIMALBITMAP bmp_file
Bitmap image to display under the minimal radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Minimal.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\MinimalEx.bmp

UMUI_SETUPTYPEPAGE_STANDARD InstTypeName
Enable the standard option. The InstTypeName must correspond to an existing InstType declaration. Typically:

!define UMUI_SETUPTYPEPAGE_STANDARD "$(UMUI_TEXT_SETUPTYPE_STANDARD_TITLE)"
InstType "$(UMUI_TEXT_SETUPTYPE_STANDARD_TITLE)"

UMUI_SETUPTYPEPAGE_STANDARD_TITLE text
Title of the standard radiobutton.

UMUI_SETUPTYPEPAGE_STANDARD_TEXT text
Text to display under the standard radiobutton.

UMUI_SETUPTYPEPAGE_STANDARDBITMAP bmp_file
Bitmap image to display under the standard radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Standard.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\StandardEx.bmp

UMUI_SETUPTYPEPAGE_COMPLETE InstTypeName
Enable the complete option. The InstTypeName must correspond to an existing InstType declaration. Typically:

!define UMUI_SETUPTYPEPAGE_COMPLETE "$(UMUI_TEXT_SETUPTYPE_COMPLETE_TITLE)"
InstType "$(UMUI_TEXT_SETUPTYPE_COMPLETE_TITLE)"

UMUI_SETUPTYPEPAGE_COMPLETE_TITLE text
Title of the complete radiobutton.

UMUI_SETUPTYPEPAGE_COMPLETE_TEXT text
Text to display under the complete radiobutton.

UMUI_SETUPTYPEPAGE_COMPLETEBITMAP bmp_file
Bitmap image to display under the complete radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Complete.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\CompleteEx.bmp

UMUI_SETUPTYPEPAGE_CUSTOM_TITLE text
Title of the custom radiobutton.

UMUI_SETUPTYPEPAGE_CUSTOM_TEXT text
Text to display under the custom radiobutton.

UMUI_SETUPTYPEPAGE_CUSTOMBITMAP bmp_file
Bitmap image to display under the custom radiobutton.
Default with UMUI: ${NSISDIR}\Contrib\Graphics\UltraModernUI\Custom.bmp
Default with MUIEx: ${NSISDIR}\Contrib\Graphics\UltraModernUI\CustomEx.bmp

UMUI_SETUPTYPEPAGE_DEFAULTCHOICE flag
The default selected flag: must be one of ${UMUI_MINIMAL}, ${UMUI_STANDARD}, ${UMUI_COMPLETE} or ${UMUI_CUSTOM}
Default: ${UMUI_CUSTOM}

UMUI_SETUPTYPEPAGE_REGISTRY_ROOT root
UMUI_SETUPTYPEPAGE_REGISTRY_KEY key
UMUI_SETUPTYPEPAGE_REGISTRY_VALUENAME value_name
The registry key to store selected setup type. The page will use it to remember the selected setup type. This value will be automatically saved to the registry on install success. Don't forget to remove this key during uninstallation.
UMUI_SETUPTYPEPAGE_REGISTRY_ROOT and UMUI_SETUPTYPEPAGE_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

You can use the macro UMUI_GET_CHOOSEN_SETUP_TYPE_TEXT to get the selected setup type text for, by example, the Confirm page function:

Function confirm_function
; ...
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(UMUI_TEXT_SETUPTYPE_TITLE):"
  !insertmacro UMUI_GET_CHOOSEN_SETUP_TYPE_TEXT
  Pop $R0
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "      $R0"
; ...
FunctionEnd

[+] Components Page Settings

MUI_COMPONENTSPAGE_TEXT_TOP text
Text to display on the top of the page.

MUI_COMPONENTSPAGE_TEXT_COMPLIST text
Text to display on next to the components list.

MUI_COMPONENTSPAGE_TEXT_INSTTYPE text
Text to display on next to the installation type combo box.

MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE text
Text to display on the of the top of the description box.

MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO text
Text to display inside the description box when no section is selected.

UMUI_COMPONENTSPAGE_INSTTYPE_REGISTRY_ROOT root
UMUI_COMPONENTSPAGE_INSTTYPE_REGISTRY_KEY key
UMUI_COMPONENTSPAGE_INSTTYPE_REGISTRY_VALUENAME value_name
The registry key to store selected setup type. The page will use it to remember the selected setup type. This value will be automatically saved to the registry on install success. Don't forget to remove this key during uninstallation.
UMUI_COMPONENTSPAGE_INSTTYPE_REGISTRY_ROOT and UMUI_COMPONENTSPAGE_INSTTYPE_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

UMUI_COMPONENTSPAGE_REGISTRY_ROOT root
UMUI_COMPONENTSPAGE_REGISTRY_KEY key
UMUI_COMPONENTSPAGE_REGISTRY_VALUENAME value_name
The registry key to store selected components. The page will use it to remember the selected components. This value will be automatically saved to the registry on install success. Don't forget to remove this key during uninstallation.
UMUI_COMPONENTSPAGE_REGISTRY_ROOT and UMUI_COMPONENTSPAGE_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.
Components must be declared using UMUI_COMPONENT macro surrounded by UMUI_DECLARECOMPONENTS_BEGIN and UMUI_DECLARECOMPONENTS_END macros:

Section "Section 1" SecID1
SectionEnd
Section "Section 2" SecID2
SectionEnd

!insertmacro UMUI_DECLARECOMPONENTS_BEGIN
  !insertmacro UMUI_COMPONENT SecID1
  !insertmacro UMUI_COMPONENT SecID2
!insertmacro UMUI_DECLARECOMPONENTS_END

[+] Directory Page Settings

MUI_DIRECTORYPAGE_TEXT_TOP text
Text to display on top of the page.

MUI_DIRECTORYPAGE_TEXT_DESTINATION text
Text to display on the destination folder frame.

MUI_DIRECTORYPAGE_VARIABLE variable
Variable in which to store the selected folder.
Default: $INSTDIR

MUI_DIRECTORYPAGE_VERIFYONLEAVE
Does not disable the Next button when a folder is invalid but allows you to use GetInstDirError in the leave function to handle an invalid folder.

[+] Start Menu Folder Page Settings

For that the START_MENU page uses the colors of background and of text, you must use at least the version 2.06 of NSIS

Put the code to write the shortcuts (using CreateShortcut) between the MUI_STARTMENU_WRITE_BEGIN and MUI_STARTMENU_WRITE_END macros:

!insertmacro MUI_STARTMENU_WRITE_BEGIN page_id
...create shortcuts...
!insertmacro MUI_STARTMENU_WRITE_END

The page ID should be the ID of the page on which the user has selected the folder for the shortcuts you want to write.

MUI_STARTMENUPAGE_TEXT_TOP text
Text to display on the top of the page.

MUI_STARTMENUPAGE_TEXT_CHECKBOX text
Text to display next to the checkbox to disable the Start Menu folder creation.

MUI_STARTMENUPAGE_DEFAULTFOLDER folder
The default Start Menu Folder.

MUI_STARTMENUPAGE_NODISABLE
Do not display the checkbox to disable the creation of Start Menu shortcuts.

MUI_STARTMENUPAGE_REGISTRY_ROOT root
MUI_STARTMENUPAGE_REGISTRY_KEY key
MUI_STARTMENUPAGE_REGISTRY_VALUENAME value_name
The registry key to store the Start Menu folder. The page will use it to remember the users preference. This value will be automatically saved to the registry on install success. You should also use for the uninstaller to remove the Start Menu folders. Don't forget to remove this key during uninstallation.
MUI_STARTMENUPAGE_REGISTRY_ROOT and MUI_STARTMENUPAGE_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

For the uninstaller, use the MUI_STARTMENU_GETFOLDER macro to get the Start Menu folder:

!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk"

[+] Alternative Start Menu Folder Page Settings

For that the START_MENU page uses the colors of background and of text, you must use at least the version 2.06 of NSIS

Put the code to write the shortcuts (using CreateShortcut) between the MUI_STARTMENU_WRITE_BEGIN and MUI_STARTMENU_WRITE_END macros:

!insertmacro MUI_STARTMENU_WRITE_BEGIN page_id
...create shortcuts...
!insertmacro MUI_STARTMENU_WRITE_END

The page ID should be the ID of the page on which the user has selected the folder for the shortcuts you want to write.

MUI_STARTMENUPAGE_TEXT_TOP text
Text to display on the top of the page.

MUI_STARTMENUPAGE_TEXT_CHECKBOX text
Text to display next to the checkbox to disable the Start Menu folder creation.

MUI_STARTMENUPAGE_DEFAULTFOLDER folder
The default Start Menu Folder.

MUI_STARTMENUPAGE_NODISABLE
Do not display the checkbox to disable the creation of Start Menu shortcuts.

UMUI_ALTERNATIVESTARTMENUPAGE_USE_TREEVIEW
Replace the default ListVIew by a TreeView.

UMUI_ALTERNATIVESTARTMENUPAGE_SETSHELLVARCONTEXT
Show radio buttons to select ShellVarContext.

UMUI_STARTMENUPAGE_SHELL_VAR_CONTEXT_TITLE text
Text to display on the top of the ShellVarContext GroupBox.

UMUI_STARTMENUPAGE_TEXT_FOR_ALL_USERS text
Text to display next to the radio button to select for all users ShellVarContext.

UMUI_STARTMENUPAGE_TEXT_FOR_THE_CURRENT_USER text
Text to display next to the radio button to select the current user ShellVarContext.

MUI_STARTMENUPAGE_REGISTRY_ROOT root
MUI_STARTMENUPAGE_REGISTRY_KEY key
MUI_STARTMENUPAGE_REGISTRY_VALUENAME value_name
The registry key to store the Start Menu folder. The page will use it to remember the users preference. This value will be automatically saved to the registry on install success. You should also use for the uninstaller to remove the Start Menu folders. Don't forget to remove this key during uninstallation.
MUI_STARTMENUPAGE_REGISTRY_ROOT and MUI_STARTMENUPAGE_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

For the uninstaller, use the MUI_STARTMENU_GETFOLDER macro to get the Start Menu folder:

!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
Delete "$SMPROGRAMS\$R0\Your Shortcut.lnk"

You can use the UMUI_GETSHELLVARCONTEXT macro to get the selected selected shell var context for, by example, the Confirm page function:

Function confirm_function
; ...
  ;Only if StartMenu Folder is selected
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
    !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
        "$(UMUI_TEXT_INSTCONFIRM_TEXTBOX_START_MENU_FOLDER)"
    !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "      $STARTMENU_FOLDER"

    ;ShellVarContext
    !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE "$(UMUI_TEXT_SHELL_VAR_CONTEXT)"
    !insertmacro UMUI_GETSHELLVARCONTEXT
    Pop $1
    StrCmp $1 "all" 0 current
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
          "      $(UMUI_TEXT_SHELL_VAR_CONTEXT_FOR_ALL_USERS)"
      Goto endsvc
    current:
      !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
          "      $(UMUI_TEXT_SHELL_VAR_CONTEXT_ONLY_FOR_CURRENT_USER)"
    endsvc:
    !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""

  !insertmacro MUI_STARTMENU_WRITE_END
; ...
FunctionEnd

[+] AdditionalTasks Page Settings

UMUI_ADDITIONALTASKSPAGE_TEXT_TOP text
Text to display on the top of the page.

UMUI_ADDITIONALTASKS_REGISTRY_ROOT root
UMUI_ADDITIONALTASKS_REGISTRY_KEY key
UMUI_ADDITIONALTASKS_REGISTRY_VALUENAME value_name
The registry key to store the AddistionalTasks value. The page will use it to remember the all selected all value selected on all the AddistionalTasks pages. This value will be automatically saved to the registry on install success. Don't forget to remove this key during uninstallation.
UMUI_ADDITIONALTASKS_REGISTRY_ROOT and UMUI_ADDITIONALTASKS_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.

The page take a function in parameter containing some macro to add elements on the page.
UMUI_ADDITIONALTASKSPAGE_ADD_LABEL text
Macro to add a text;
UMUI_ADDITIONALTASKSPAGE_ADD_TASK taskID isChecked text
Macro to add a checkbox task;
UMUI_ADDITIONALTASKSPAGE_ADD_TASK_RADIO taskID isSelected text
Macro to add a radio task;
UMUI_ADDITIONALTASKSPAGE_ADD_EMPTYLINE
Macro to add an empty line;
UMUI_ADDITIONALTASKSPAGE_ADD_LINE
Macro to add an horizontal line;
for example:

Function addtasks_function

  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL \
      "$(UMUI_TEXT_ADDITIONALTASKS_ADDITIONAL_ICONS)"
  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK DESKTOP 1 \
      "$(UMUI_TEXT_ADDITIONALTASKS_CREATE_DESKTOP_ICON)"
  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK QUICK_LAUNCH 1 \
      "$(UMUI_TEXT_ADDITIONALTASKS_CREATE_QUICK_LAUNCH_ICON)"

  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_EMPTYLINE

  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL \
      "$(UMUI_TEXT_ADDITIONALTASKS_ADVANCED_PARAMETERS)"
  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK STARTUP 1 \
      "$(UMUI_TEXT_ADDITIONALTASKS_LAUNCH_PROGRAM_AT_WINDOWS_STARTUP)"

  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL \
      "$(UMUI_TEXT_ADDITIONALTASKS_FILE_ASSOCIATION)"
  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK ASSOCIATE 0 \
      "$(UMUI_TEXT_ADDITIONALTASKS_ASSOCIATE_WITH) .UMUI $(UMUI_TEXT_ADDITIONALTASKS_ASSOCIATE_WITH_END)"

  !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LINE

  ; only if a directory has been selected in the STARTMENU page
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_LABEL "$(UMUI_TEXT_SHELL_VAR_CONTEXT)"
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK_RADIO ALL 1 \
      "$(UMUI_TEXT_SHELL_VAR_CONTEXT_FOR_ALL_USERS)"
    !insertmacro UMUI_ADDITIONALTASKSPAGE_ADD_TASK_RADIO CURRENT 0 \
      "$(UMUI_TEXT_SHELL_VAR_CONTEXT_ONLY_FOR_CURRENT_USER)"
  !insertmacro MUI_STARTMENU_WRITE_END

FunctionEnd

You can use the UMUI_ADDITIONALTASKS_IF_CKECKED, UMUI_ADDITIONALTASKS_IF_NOT_CKECKED and UMUI_ADDITIONALTASKS_ENDIF macros to check if element is selected.
By example, the Confirm page function:

Function confirm_function
; ...
  ;Only if one at least of the six checks is checked  
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DESKTOP|QUICK_LAUNCH|STARTUP|ASSOCIATE|ALL|CURRENT
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "$(UMUI_TEXT_ADDITIONALTASKS_TITLE):"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF
  ;Only if one at least of additional icon check is checked  
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DESKTOP|QUICK_LAUNCH
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "      $(UMUI_TEXT_ADDITIONALTASKS_ADDITIONAL_ICONS)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF
  ;Only if the first check is checked  
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED DESKTOP
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "            $(UMUI_TEXT_ADDITIONALTASKS_CREATE_DESKTOP_ICON)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF
  ;Only if the second check is checked  
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED QUICK_LAUNCH
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "            $(UMUI_TEXT_ADDITIONALTASKS_CREATE_QUICK_LAUNCH_ICON)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF
  ;Only if start programm at windows startup check is checked  
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED STARTUP
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "      $(UMUI_TEXT_ADDITIONALTASKS_ADVANCED_PARAMETERS)"
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "            $(UMUI_TEXT_ADDITIONALTASKS_LAUNCH_PROGRAM_AT_WINDOWS_STARTUP)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF 
  ;Only if file association check is checked  
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED ASSOCIATE
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "      $(UMUI_TEXT_ADDITIONALTASKS_FILE_ASSOCIATION)"
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "            $(UMUI_TEXT_ADDITIONALTASKS_ASSOCIATE_WITH) .UMUI $(UMUI_TEXT_ADDITIONALTASKS_ASSOCIATE_WITH_END)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF 
  ; only if a directory has been selected in the STARTMENU page
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED ALL|CURRENT
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "      $(UMUI_TEXT_SHELL_VAR_CONTEXT)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF
  ; only if for all user radio is selected
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED ALL
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "            $(UMUI_TEXT_SHELL_VAR_CONTEXT_FOR_ALL_USERS)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF
  ; only if for current user is selected
  !insertmacro UMUI_ADDITIONALTASKS_IF_CKECKED CURRENT
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
      "            $(UMUI_TEXT_SHELL_VAR_CONTEXT_ONLY_FOR_CURRENT_USER)"
  !insertmacro UMUI_ADDITIONALTASKS_ENDIF 
; ...
FunctionEnd

[+] Install Confirm Page Settings

UMUI_CONFIRMPAGE_TEXT_TOP text
Text to display on the top of the page.

UMUI_CONFIRMPAGE_TEXT_BOTTOM text
Text to display on the bottom of the page.

UMUI_CONFIRMPAGE_TEXTBOX function_name
Draw a TextBox in which will be post the current configuration. The function will be use to add lines (using the UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE macro).

For example to add the Destination Location and the Start Menu Floder :

Function function_name
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
    "$(UMUI_INSTCONFIRM_TEXTBOX_DESTINATION_LOCATION)"
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " $INSTDIR"
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE ""
  ;Only if StartMenu Floder is selected
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE \
    "$(UMUI_INSTCONFIRM_TEXTBOX_START_MENU_FLODER)"
  !insertmacro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE " $STARTMENU_FOLDER"
  !insertmacro MUI_STARTMENU_WRITE_END
FunctionEnd

Use the UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE macro to add lines with a empty string to jump a line.
The $(UMUI_TEXT_INSTCONFIRM_TEXTBOX_DESTINATION_LOCATION) and
$(UMUI_TEXT_INSTCONFIRM_TEXTBOX_START_MENU_FLODER) variables are defined in the langage files.

[+] FileDiskRequest Page Settings

This page is shown only when the file to search is not on the folder stored on the specified variable.

UMUI_FILEDISKREQUESTPAGE_TEXT_TOP text
Text to display on the top of the page.

UMUI_FILEDISKREQUESTPAGE_TEXT_PATH text
Text to display on the folder frame.

UMUI_FILEDISKREQUESTPAGE_FILE_NAME name
The name of the file to search.

UMUI_FILEDISKREQUESTPAGE_DISK_NAME name
Optional. The name of the disk containing the file to search. This parameter change the default UMUI_FILEDISKREQUESTPAGE_TEXT_TOP.

UMUI_FILEDISKREQUESTPAGE_VARIABLE variable
Variable in which to store the selected folder.

[+] Installation Page Settings

MUI_INSTFILESPAGE_FINISHHEADER_TEXT text
Text to display on the header of the installation page when the installation has been completed (won't be displayed when using a Finish page without MUI_(UN)FINISHPAGE_NOAUTOCLOSE).

MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT text
Subext to display on the header of the installation page when the installation has been completed (won't be displayed when using a Finish page without MUI_(UN)FINISHPAGE_NOAUTOCLOSE).

MUI_INSTFILESPAGE_ABORTHEADER_TEXT text
Text to display on the header of the installation page when the installation has been aborted.

MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT text
Subext to display on the header of the installation page when the installation has been aborted.

UMUI_INSTFILEPAGE_ENABLE_CANCEL_BUTTON function_name
Enable the instfile page cancel button and call the function_name in case of cancelled. This function must cancel the modifications of the system that there could have had. For the UNPAGE_INSTFILE, this function must begin with "un." .

[+] Finish Page Settings

MUI_FINISHPAGE_TITLE title
Title to display on the top of the page.

MUI_FINISHPAGE_TITLE_3LINES
Extra space for the title area.
It is not used in the alternate finish page.

MUI_FINISHPAGE_TEXT text
Text to display on the page. Use \r\n for a newline.

MUI_FINISHPAGE_TEXT_LARGE
Extra space for the text area (if using checkboxes).

MUI_FINISHPAGE_BUTTON text
Text to display on the Finish button.

MUI_FINISHPAGE_TEXT_REBOOT text
Text to display on the finish page when asking for a system reboot. Use \r\n for a newline.

MUI_FINISHPAGE_TEXT_REBOOTNOW text
Text to display next to the 'Reboot now' option button.

MUI_FINISHPAGE_TEXT_REBOOTLATER text
Text to display next to the 'Reboot later' option button.

MUI_FINISHPAGE_RUN exe_file
Application which the user can select to run using a checkbox. You don't need to put quotes around the filename when it contains spaces.

MUI_FINISHPAGE_RUN_TEXT text
Texts to display next to the 'Run program' checkbox.

MUI_FINISHPAGE_RUN_PARAMETERS parameters
Parameters for the application to run. Don't forget to escape double quotes in the value (use $\").

MUI_FINISHPAGE_RUN_NOTCHECKED
Do not check the 'Run program' checkbox by default

MUI_FINISHPAGE_RUN_FUNCTION function_name
Call a function instead of executing an application (define MUI_FINISHPAGE_RUN without parameters). You can use the function to exectute multiple applications or you can change the checkbox name and use it for other things.

MUI_FINISHPAGE_SHOWREADME file/url
File or website which the user can select to view using a checkbox. You don't need to put quotes around the filename when it contains spaces.

MUI_FINISHPAGE_SHOWREADME_TEXT text
Texts to display next to the 'Show Readme' checkbox.

MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
Do not check the 'Show Readme' checkbox by default

MUI_FINISHPAGE_SHOWREADME_FUNCTION function_name
Call a function instead of showing a file (define MUI_FINISHPAGE_SHOWREADME without parameters). You can use the function to show multiple files or you can change the checkbox name and use it for other things.

MUI_FINISHPAGE_LINK link_text
Text for a link on the which the user can click to view a website or file.

MUI_FINISHPAGE_LINK_LOCATION file/url
Website or file which the user can select to view using the link. You don't need to put quotes around the filename when it contains spaces.

MUI_FINISHPAGE_LINK_COLOR (color: RRGGBB hexadecimal)
Text color for the link on the Finish page.
Default: ${UMUI_TEXT_LIGHTCOLOR}

MUI_FINISHPAGE_NOREBOOTSUPPORT
Disables support for the page that allows the user to reboot the system. Define this option to save some space if you are not using the /REBOOTOK flag or SetRebootFlag.

[+] Abort Page Settings

UMUI_ABORTPAGE_TITLE title
Title to display on the top of the page.

UMUI_ABORTPAGE_TITLE_3LINES
Extra space for the title area.
It is not used in the alternate abort page.

UMUI_ABORTPAGE_TEXT text
Text to display on the page. Use \r\n for a newline.

UMUI_ABORTPAGE_LINK link_text
Text for a link on the which the user can click to view a website or file.

UMUI_ABORTPAGE_LINK_LOCATION file/url
Website or file which the user can select to view using the link. You don't need to put quotes around the filename when it contains spaces.

UMUI_ABORTPAGE_LINK_COLOR (color: RRGGBB hexadecimal)
Text color for the link on the Finish page.
Default: ${UMUI_TEXT_LIGHTCOLOR}

[+] Uninstall Confirm Page Settings

MUI_UNCONFIRMPAGE_TEXT_TOP text
Text to display on the top of the page.

MUI_UNCONFIRMPAGE_TEXT_LOCATION text
Text to display next to the uninstall location text box.

MUI_UNCONFIRMPAGE_VARIABLE variable
Variable in which to store the uninstall source folder.
Default: $INSTDIR

[+] Advanced Page Settings

You can add custom code to the page functions of your Modern UI pages. More info...

4. Custom functions

If you want add your own code to functions inserted by the Modern UI (e.g. the .onGUIInit function and the page functions), create your own function and let the Modern UI functions call them.

More info...

5. Language files

Insert the Modern UI language files for the languages to want to include.

!insertmacro MUI_LANGUAGE "English"

The Modern UI language files load the NLF language files, so you should not use LoadLanguageFile.

[+] Language Selection Page

See the MultiLanguage Page Settings above.

[+] Language Selection Dialog

If you want the installer to display a language selection dialog (have a look at the MultiLanguage.nsi example), insert the MUI_LANGDLL_DISPLAY macro in the .onInit function:

Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

You can also use this macro for the uninstaller, in the un.onInit function.

[+] Language Selection Dialog Settings

To remember to users preference, you ca define a registry key.
Note: These defines should be set before inserting the installation page macro.

UMUI_LANGUAGE_REGISTRY_ROOT root
UMUI_LANGUAGE_REGISTRY_KEY key
UMUI_LANGUAGE_REGISTRY_VALUENAME value_name
The registry key to store the language. The users preference will be remembered. You can also use it for the uninstaller to display the right language. This value will be automatically saved to the registry on install success. Don't forget to remove this key in the uninstaller.
UMUI_LANGUAGE_REGISTRY_ROOT and UMUI_LANGUAGE_REGISTRY_KEY defines are optional when UMUI_PARAMS_REGISTRY_ROOT and UMUI_PARAMS_REGISTRY_KEY are defined.
The MUI_LANGDLL_REGISTRY_ROOT, MUI_LANGDLL_REGISTRY_KEY and MUI_LANGDLL_REGISTRY_VALUENAME defines has been renamed in Ultra-Modern UI.

For the uninstaller, insert the MUI_UNGETLANGUAGE macro in un.onInit to get the stored language preference:

Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd

[+] Language Selection Dialog Interface Settings

To customize the language selection dialog interface, use these defines before inserting the MUI_LANGDLL_DISPLAY macro.

MUI_LANGDLL_WINDOWTITLE text
The window title of the language selection dialog.

MUI_LANGDLL_INFO text
The text to display on the language selection dialog.

UMUI_LANGUAGE_ALWAYSSHOW
Always show the language selection dialog, even if a language has been stored in the registry. The language stored in the registry will be selected by default.
The MUI_LANGDLL_ALWAYSSHOW define has been renamed in UltraModernUI.

6. Reserve files

If you are using solid compression (by default, solid compression is enabled for BZIP2 and LZMA), it's important that files which are being extracted in init- or page functions function are located before other files in the data block, because this will make your installer faster.

If there are File commands in your sections or functions above the init- or page functions, add the reserve file macros above your sections and functions.

ReserveFile "ioFile.ini" ;Your own InstallOptions INI files
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;InstallOptions plug-in
!insertmacro MUI_RESERVEFILE_LANGDLL ;Language selection dialog

7. Your own sections and functions

Add your installer sections and functions. See the NSIS Users Manual for details.

Information about section code and function code for Start Menu shortcut creation and language selection can be found above.

8. Section descriptions

The descriptions of sections will be displayed on the components page, when the user hovers the mouse over a section. If you don't want to use descriptions, use the MUI_COMPONENTSPAGE_NODESC interface setting.

To set a description for a section, you have to add an additional parameter to the Section commmand with a name for the define that should contain the section number.

Section "Section Name 1" Section1
 ...
SectionEnd

Use these macros to set the descriptions:

LangString DESC_Section1 ${LANG_ENGLISH} "Description of section 1."
LangString DESC_Section2 ${LANG_ENGLISH} "Description of section 2."

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${Section1} $(DESC_Section1)
!insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(DESC_Section2)
!insertmacro MUI_FUNCTION_DESCRIPTION_END

For the uninstaller, use the MUI_UNFUNCTION_DESCRIPTION_BEGIN and MUI_UNFUNCTIONS_DESCRIPTION_END macros.

Custom pages

If you want add your custom pages to your installer, you should insert your own page commands between the page macros.

!insertmacro MUI_PAGE_WELCOME
Page custom FunctionName ;Custom page
!insertmacro MUI_PAGE_COMPONENTS

;Uninstaller
!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.FunctionName ;Custom page
!insertmacro MUI_UNPAGE_INSTFILES

[+] Using InstallOptions or InstallOptionsEx for custom pages

Ultra-Modern UI support natively two plug-ins to displays custom pages which you can create using INI files. InstallOptions and InstallOptionsEx:

InstallOptions is the original plug-in used by Modern UI.

InstallOptionsEx, writing by deguix and by SuperPat since version 2.4.5, is an expanded version of InstallOptions containing many new features, with size drawback.

Have a look at the InstallOptions documentation or the InstallOptionsEx documentation for info about creating InstallOptions(Ex) INI files.

If you wan't to use InstallOptionEx Instead of the original IntallOption pluyg-in, you have to use the UMUI_USE_INSTALLOPTIONSEX define.

InstallOptionEx is used in the Alternative Start Menu page to show Start Menu directories in a TreeView and in the Information pages to show RichText files. You can't use these features if InstallOptionEx is not activated.

Next, you have to extract your InstallOptions INI File in the .onInit function (un.onInit for the uninstaller) using the MUI_INSTALLOPTIONS_EXTRACT macro:

Function .onInit
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "ioFile.ini"
FunctionEnd

If your INI File is located in another directory, use MUI_INSTALLOPTIONS_EXTRACT_AS. The second parameter is the filename for the temporary plug-ins directory, use this filename as parameter for the other InstallOptions macros.

Function .onInit
!insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "..\ioFile.ini" "ioFile.ini"
FunctionEnd

You can call InstallOptions in the function defined with the Page or UninstPage command using the MUI_INSTALLOPTIONS_DISPLAY macro. This macro skin automatically your custom pages. It can also automatically convert, on the fly, your custom InstallOptions INI into an InstallOptionsEx INI.

If the UMUI_(UN)PAGE_ABORT page is inserted, you need to use the UMUI_ABORT_IF_INSTALLFLAG_IS macro with the ${UMUI_CANCELLED} flag to hide the page when user cancel the installation:

Use the MUI_HEADER_TEXT macro to set the text on the page header:

LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Install Options Page Title"
LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "A subtitle"
Function FunctionName ;FunctionName defined with Page command
  
  !insertmacro UMUI_ABORT_IF_INSTALLFLAG_IS ${UMUI_CANCELLED}
  
  !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)"
  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "ioFile.ini"
FunctionEnd

For custom fonts and colors, macros for the initDialog and show functions of InstallOptions are also available. It can automatically convert, on the fly, your custom InstallOptions INI into an InstallOptionsEx INI. Contrary to the MUI_INSTALLOPTIONS_DISPLAY macro, These one can't skin automatically your pages and you need to apply manually the text color and background color to all fields:

Var HWND
Var DLGITEM
Var FONT
LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Install Options Page Title"
LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "A subtitle"
Function FunctionName ;FunctionName defined with Page command
  
  !insertmacro UMUI_ABORT_IF_INSTALLFLAG_IS ${UMUI_CANCELLED}
  
  !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)"
  !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "ioFile.ini"
  Pop $HWND ;HWND of dialog
  
  ;If you do not use MUIEx, apply the background color to the page:
  ; Manually:
  SetCtlColors $HWND "" "${MUI_BGCOLOR}"
  ; or if you use a background image:
  SetCtlColors $HWND "" "transparent"
  ; Or using this macro:
  !insertmacro UMUI_IOPAGEBGTRANSPARENT_INIT $HWND

  ;You can apply the right text color and background color to all the Text, Password,
  ; DateTime, IPAddress, ListBox, ComboBox, DropList, FileRequest and DirRequest fields
  ; Manually:
  GetDlgItem $0 $HWND 1200
  SetCtlColors $0 ${UMUI_TEXT_INPUTCOLOR} ${UMUI_BGINPUTCOLOR}
  ; Or using this macro:
  GetDlgItem $0 $HWND 1201
  !insertmacro UMUI_IOPAGEINPUTCTL_INIT $0

  ;You need to apply the right text color and background color to all the Link fields
  ; Manually:
  GetDlgItem $0 $HWND 1202
  SetCtlColors $0 ${UMUI_TEXT_LIGHTCOLOR} ${MUI_BGCOLOR}
  ; or if you use a background image:
  SetCtlColors $0 ${UMUI_TEXT_LIGHTCOLOR} "transparent"
  ; Or using this macro:
  GetDlgItem $0 $HWND 1203
  !insertmacro UMUI_IOPAGECTLLIGHTTRANSPARENT_INIT $0

  ;You need to apply the right text color and background color to all the
  ; GroupBox fields
  ; Manually:
  GetDlgItem $0 $HWND 1202
  SetCtlColors $0 ${UMUI_TEXT_LIGHTCOLOR} ${MUI_BGCOLOR}
  ; Or using this macro:
  GetDlgItem $0 $HWND 1203
  !insertmacro UMUI_IOPAGECTLLIGHT_INIT $0

  ;If you do not use MUIEx, you need to apply the right text color and background color
  ; to all the label, checkbox, radiobutton fields
  ; Manually:
  GetDlgItem $0 $HWND 1204
  SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR}
  ; or if you use a background image:
  SetCtlColors $0 ${MUI_TEXTCOLOR} "transparent"
  ; Or using this macro:
  GetDlgItem $0 $HWND 1205
  !insertmacro UMUI_IOPAGECTLTRANSPARENT_INIT $0
  
  GetDlgItem $DLGITEM $HWND 1200 ;1200 + Field number - 1
  ;$DLGITEM contains the HWND of the first field
  CreateFont $FONT "Tahoma" 10 700 SendMessage $DLGITEM ${WM_SETFONT} $FONT 0
  !insertmacro MUI_INSTALLOPTIONS_SHOW
FunctionEnd

If you need the InstallOptions return value (success, back, cancel, error), use the MUI_INSTALLOPTIONS_DISPLAY_RETURN or MUI_INSTALLOPTIONS_SHOW_RETURN macros. The return value will be added to the stack, so you can use the Pop command to get it.

Use these macros to read or write INI file values:

!insertmacro MUI_INSTALLOPTIONS_READ $VAR "ioFile.ini" "Field #" "Name"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioFile.ini" "Field #" "Name" "Value"

For example, you can use the MUI_INSTALLOPTIONS_READ macro in a section to get the user input:

!insertmacro MUI_INSTALLOPTIONS_READ $R0 "ioFile.ini" "Field 1" "State"

For more details about InstallOptions, validation of user input etc., check the InstallOptions documentation or the InstallOptionsEx documentation.

[+] Using nsDialogs for custom pages

nsDialogs is the official plug-in used by Modern UI 2.

Ultra-Modern UI version 2 still not use the nsDialogs plug-in to displays custom pages but InstallOptions(Ex), so usage of nsDialogs is not recommended because two concurrent plug-ins will be used in parallel due to custom UMUI pages.

Have a look at the nsDialogs documentation for info about creating nsDialogs custom pages.

Contrary to InstallOptions(Ex), Ultra-Modern UI does not have macro to skin automatically your custom pages.

If the UMUI_(UN)PAGE_ABORT page is inserted, you need to use the UMUI_ABORT_IF_INSTALLFLAG_IS macro with the ${UMUI_CANCELLED} flag to hide the page when user cancel the installation:

Use the MUI_HEADER_TEXT macro to set the text on the page header:

!include nsDialogs.nsh
LangString TEXT_NSD_TITLE ${LANG_ENGLISH} "nsDialogs Page Title"
LangString TEXT_NSD_SUBTITLE ${LANG_ENGLISH} "A subtitle"
Function FunctionName ;FunctionName defined with Page command
  
  !insertmacro UMUI_ABORT_IF_INSTALLFLAG_IS ${UMUI_CANCELLED}
  
  !insertmacro MUI_HEADER_TEXT "$(TEXT_NSD_TITLE)" "$(TEXT_NSD_SUBTITLE)"
  nsDialogs::Create 1018
  Pop $HWND ;HWND of dialog
  
  ;If you do not use MUIEx, apply the background color to the page:
  ; Manually:
  SetCtlColors $HWND "" "${MUI_BGCOLOR}"
  ; or if you use a background image:
  SetCtlColors $HWND "" "transparent"
  ; Or using this macro:
  !insertmacro UMUI_IOPAGEBGTRANSPARENT_INIT $HWND
  
  ${NSD_CreateText} 0 35 100% 12u hello
  Pop $0
  
  ;You can apply the right text color and background color to all the Text, Password,
  ; Number, ListBox, ComboBox, DropList, FileRequest and DirRequest input fields
  ; Manually:
  SetCtlColors $0 ${UMUI_TEXT_INPUTCOLOR} ${UMUI_BGINPUTCOLOR}
  ; Or using this macro:
  !insertmacro UMUI_IOPAGEINPUTCTL_INIT $0
  
  ${NSD_CreateLink} 10 120 100% 12 "http://ultramodernui.sourceforge.net/"
  Pop $0
  ${NSD_OnClick} $0 onClickMyLink  
  
  ;You need to apply the right text color and background color to all the Link fields
  ; Manually:
  SetCtlColors $0 ${UMUI_TEXT_LIGHTCOLOR} ${MUI_BGCOLOR}
  ; or if you use a background image:
  SetCtlColors $0 ${UMUI_TEXT_LIGHTCOLOR} "transparent"
  ; Or using this macro:
  !insertmacro UMUI_IOPAGECTLLIGHTTRANSPARENT_INIT $0
  
  ${NSD_CreateGroupBox} 0 40u 100% 40u "Group"
  Pop $0
  
  ;You need to apply the right text color and background color to all the
  ; GroupBox fields
  ; Manually:
  SetCtlColors $0 ${UMUI_TEXT_LIGHTCOLOR} ${MUI_BGCOLOR}
  ; Or using this macro:
  !insertmacro UMUI_IOPAGECTLLIGHT_INIT $0
  
  ${NSD_CreateCheckbox} 0 -50 100% 8u Test
  Pop $0
  GetFunctionAddress $HWND OnCheckbox
  nsDialogs::OnClick $0 $HWND
  
  ;If you do not use MUIEx, you need to apply the right text color and background color
  ; to all the label, checkbox, radiobutton fields
  ; Manually:
  SetCtlColors $0 ${MUI_TEXTCOLOR} ${MUI_BGCOLOR}
  ; or if you use a background image:
  SetCtlColors $0 ${MUI_TEXTCOLOR} "transparent"
  ; Or using this macro:
  !insertmacro UMUI_IOPAGECTLTRANSPARENT_INIT $0
  
  nsDialogs::Show
FunctionEnd

For more details about nsDialogs, validation of user input etc., check the nsDialogs documentation.

[+] Customize standard dialogs

To change elements on the dialogs, use customized UI resource files (see Interface Configuration). You can change your copies of the original files (in the Contrib\UIs folder) by using an application such as Resource Hacker.

The 'Please wait while Setup is loading...' text on the splash screen that is being displayed while the installer is starting (Verifying installer, Unpacking data) can be changed by using a customized UI resource file (MUI_UI setting) with a modified dialog 111.
The 'Verifying installer' and 'Unpacking data' texts are defined in the language header file of the NSIS exehead (Source\exehead\lang.h). To change them, you have to edit this file and recompile NSIS.

To modify the Welcome dialog and Finish dialog, use a custom INI file (MUI_SPECIALINI setting) or write to the INI file in the custom page functions.

Customize Ultra-Modern UI Functions

If you want add your own code to functions inserted by the Ultra-Modern UI, such as the .onGUIInit function and the Page functions, create your own function and let the Ultra-Modern UI functions call them. Use the defines to define the name of your functions.

Contrary to Modern UI, Ultra-Modern UI may also define itself, if background skin is used, the .onGUIEnd and the un.onGUIEnd functions. Consequently, you may not be able to declare them in your script, and, in this case, you must used this customization.

Example:

!define MUI_CUSTOMFUNCTION_GUIINIT myGUIInit
Function myGUIInit
 ...your own code...
FunctionEnd

!define UMUI_CUSTOMFUNCTION_GUIEND myGUIEnd
Function myGUIEnd
 ...your own code...
FunctionEnd

!define MUI_CUSTOMFUNCTION_UNGUIINIT myunGUIInit
Function myunGUIInit
 ...your own code...
FunctionEnd

!define UMUI_CUSTOMFUNCTION_UNGUIEND myunGUIEnd
Function myunGUIEnd
 ...your own code...
FunctionEnd

[+] General Custom Functions

These defines should be set before inserting the language macros.

MUI_CUSTOMFUNCTION_GUIINIT function
MUI_CUSTOMFUNCTION_UNGUIINIT function
UMUI_CUSTOMFUNCTION_GUIEND function
UMUI_CUSTOMFUNCTION_UNGUIEND function
MUI_CUSTOMFUNCTION_ABORT function
MUI_CUSTOMFUNCTION_UNABORT function
MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION function
MUI_CUSTOMFUNCTION_UNONMOUSEOVERSECTION function

Mouse over functions are only available when the description macros (MUI_FUNCTION_DESCRIPTION_BEGIN) are used. When component page descriptions are not used, regular .onMouseOverSection and un.onMouseOverSection must be used.

[+] Page Custom Functions

These defines should be set before inserting a page macro.

MUI_PAGE_CUSTOMFUNCTION_PRE function
MUI_PAGE_CUSTOMFUNCTION_SHOW function
MUI_PAGE_CUSTOMFUNCTION_LEAVE function
MUI_PAGE_CUSTOMFUNCTION_DESTROYED function

Notes:

  • In the Pre function of the Welcome, the Finish and the Abort pages, you can write to the InstallOptions INI file of the page (ioSpecial.ini)
  • In the Show function of Welcome, Finish and StartMenu pages, $MUI_HWND contains the HWND of the inner dialog
  • The destroyed function is called after a external/plug-in page has been destroyed. (Currently only for the original StartMenu Page)

[+] Welcome/Finish/Abort Pages Custom Functions

This define should be inserted before a single Welcome, Finish or Abort page.

MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT function

This Init function is called before the InstallOptions INI file for the page is written, so you can use it to initialize any variables used in the page settings.

Example Scripts

These examples are in the NSISDir\Examples\UltraModernUI folder :

Version History

Credits

Made by SuperPat
- Based on Modern UI 1.81 Copyright 2002-2019 Joost Verburg.
- And inspired of the ExperienceUI of dandaman32.

Skins by SuperPat
UltraModern Icons and WXP BackGround skin is taken again on ExperineceUI of dandaman32.

Help

Please post questions at the Official NSIS Forum.

License

The zlib/libpng license applies to Ultra-Modern UI.

[+] License Terms

Copyright © 2005-2019 SuperPat
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented;
   you must not claim that you wrote the original software.
   If you use this software in a product, an acknowledgment in the
   product documentation would be appreciated but is not required.
2. Altered versions must be plainly marked as such,
   and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any distribution.