Contrib/ExperienceUI/MUIConvert.nsh
changeset 0 d5ce4c64ef88
child 27 8dd5c7dfc2de
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Contrib/ExperienceUI/MUIConvert.nsh	Tue Oct 16 00:07:41 2007 -0400
@@ -0,0 +1,537 @@
+; ExperienceUI for NSIS
+; Converter script
+; Implements support for MUI and UMUI defines into ExperienceUI
+
+; Copyright © 2005-2006 Dan Fuhry (dandaman32)
+
+!macro XPUI_PAGE_TITLE_CONVERT P
+  !insertmacro XPUI_CONVERT XPUI_${P}PAGE_TITLE MUI_TEXT_${P}_TITLE
+  !insertmacro XPUI_CONVERT XPUI_${P}PAGE_SUBTITLE MUI_TEXT_${P}_SUBTITLE
+!macroend
+
+!macro XPUI_LANGUAGE_CONVERT
+
+!verbose push
+!verbose 1 ; These can be obnoxious
+
+; CONVERSION LIST (VERY LONG)
+; LEGEND:
+
+; MACRO                 | XPUI DEFINE                               | MUI/UMUI DEFINE
+;                       |                                           |
+!insertmacro XPUI_CONVERT XPUI_HEADERIMAGE                            MUI_HEADERIMAGE_BITMAP
+!insertmacro XPUI_CONVERT XPUI_HEADERIMAGE_NORESIZETOFIT              MUI_HEADERIMAGE_BITMAP_NOSTRETCH
+!insertmacro XPUI_CONVERT XPUI_UNHEADERIMAGE                          MUI_HEADERIMAGE_UNBITMAP
+!insertmacro XPUI_CONVERT XPUI_UNHEADERIMAGE_NORESIZETOFIT            MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH
+!insertmacro XPUI_CONVERT XPUI_TEXT_COLOR                             MUI_TEXT_COLOR
+!insertmacro XPUI_CONVERT XPUI_TEXT_BGCOLOR                           MUI_BGCOLOR
+!insertmacro XPUI_CONVERT XPUI_TEXT_LIGHTCOLOR                        UMUI_TEXT_LIGHTCOLOR
+!insertmacro XPUI_CONVERT XPUI_HEADERIMAGE                            UMUI_HEADERIMAGE_BMP
+!insertmacro XPUI_CONVERT XPUI_UNHEADERIMAGE                          UMUI_UNHEADERIMAGE_BMP
+!insertmacro XPUI_CONVERT XPUI_ICON                                   MUI_ICON
+!insertmacro XPUI_CONVERT XPUI_UNICON                                 MUI_UNICON
+!insertmacro XPUI_CONVERT XPUI_ABORTWARNING_TEXT                      MUI_TEXT_ABORTWARNING
+!insertmacro XPUI_CONVERT XPUI_ABORTWARNING_TEXT                      MUI_ABORTWARNING_TEXT
+!insertmacro XPUI_CONVERT XPUI_BRANDINGTEXT_COLOR_BG                  UMUI_BRANDINGTEXTBACKCOLOR
+!insertmacro XPUI_CONVERT XPUI_BRANDINGTEXT_COLOR_FG                  UMUI_BRANDINGTEXTFRONTCOLOR
+
+!insertmacro XPUI_CONVERT XPUI_BOTTOMIMAGE                            UMUI_BOTTOMIMAGE
+!insertmacro XPUI_CONVERT XPUI_BOTTOMIMAGE_BMP                        UMUI_BOTTOMIMAGE_BMP
+!insertmacro XPUI_CONVERT XPUI_UNBOTTOMIMAGE                          UMUI_UNBOTTOMIMAGE
+!insertmacro XPUI_CONVERT XPUI_UNBOTTOMIMAGE_BMP                      UMUI_UNBOTTOMIMAGE_BMP
+
+!insertmacro XPUI_CONVERT XPUI_LEFTLOGO                               UMUI_LEFTIMAGE_BMP
+!insertmacro XPUI_CONVERT XPUI_UNLEFTLOGO                             UMUI_UNLEFTIMAGE_BMP
+
+!insertmacro XPUI_CONVERT XPUI_UI                                     MUI_UI
+!insertmacro XPUI_CONVERT XPUI_UI                                     UMUI_UI
+
+!insertmacro XPUI_CONVERT XPUI_LICENSEBKCOLOR                         MUI_LICENSEPAGE_BGCOLOR
+
+!insertmacro XPUI_CONVERT XPUI_COMPONENTSPAGE_NODESC                  MUI_COMPONENTSPAGE_NODESC
+
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGE_TEXT                       MUI_WELCOMEPAGE_TEXT
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGE_TEXT_TOP                   MUI_WELCOMEPAGE_TITLE
+
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGESTYLE2_TEXT                 MUI_WELCOMEPAGE_TEXT
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGESTYLE2_TEXT_TOP             MUI_WELCOMEPAGE_TITLE
+
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGESTYLE2_TEXT                 MUI_TEXT_WELCOME_INFO_TEXT
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGESTYLE2_TEXT_TOP             MUI_TEXT_WELCOME_INFO_TITLE
+
+!ifdef MUI_TEXT_WELCOME_INFO_TEXT
+  !insertmacro XPUI_DEFAULT XPUI_WELCOMEPAGE_TEXT `${MUI_TEXT_WELCOME_INFO_TEXT}`
+!endif
+
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGE_TEXT_TOP                   MUI_TEXT_WELCOME_INFO_TITLE
+
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGESTYLE2_TEXT                 MUI_WELCOME_INFO_TEXT
+!insertmacro XPUI_CONVERT XPUI_WELCOMEPAGESTYLE2_TEXT_TOP             MUI_WELCOME_INFO_TITLE
+
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_TEXT_TOP                   MUI_LICENSEPAGE_TEXT_TOP
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_TEXT_BOTTOM                MUI_LICENSEPAGE_TEXT_BOTTOM
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_CHECKBOX                   MUI_LICENSEPAGE_CHECKBOX
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_CHECKBOX_TEXT              MUI_LICENSEPAGE_CHECKBOX_TEXT
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_RADIOBUTTONS               MUI_LICENSEPAGE_RADIOBUTTONS
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_RADIOBUTTONS_TEXT_AGREE    MUI_LICENSEPAGE_RAGIOBUTTONS_TEXT_ACCEPT
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE  MUI_LICENSEPAGE_RAGIOBUTTONS_TEXT_DECLINE
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_TEXT_TOP                   MUI_INNERTEXT_LICENSE_TOP
+!insertmacro XPUI_CONVERT XPUI_LICENSEPAGE_TEXT_BOTTOM                MUI_INNERTEXT_LICENSE_BOTTOM
+
+; MUI Japanese Translation license page checkbox text has a `...
+!insertmacro XPUI_CONVERT_QUOTE_ALT XPUI_LICENSEPAGE_CHECKBOX_TEXT    MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX
+!insertmacro XPUI_CONVERT_QUOTE_ALT XPUI_LICENSEPAGE_CHECKBOX_TEXT    MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX
+
+!insertmacro XPUI_CONVERT XPUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE  MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE
+!insertmacro XPUI_CONVERT XPUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO   MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO
+!insertmacro XPUI_CONVERT XPUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE  MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE
+!insertmacro XPUI_CONVERT XPUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO   MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO
+
+!insertmacro XPUI_CONVERT XPUI_DIRECTORYPAGE_TEXT_TOP                 MUI_DIRECTORYPAGE_TEXT_TOP
+!insertmacro XPUI_CONVERT XPUI_DIRECTORYPAGE_TEXT_DESTINATION         MUI_DIRECTORYPAGE_TEXT_DESTINATION
+
+!insertmacro XPUI_CONVERT XPUI_STARTMENUPAGE_TEXT                     MUI_STARTMENUPAGE_TEXT_TOP
+!insertmacro XPUI_CONVERT XPUI_STARTMENUPAGE_CHECKBOX                 MUI_STARTMENUPAGE_TEXT_CHECKBOX
+!insertmacro XPUI_CONVERT XPUI_STARTMENUPAGE_TEXT                     MUI_INNERTEXT_STARTMENU_TOP
+!insertmacro XPUI_CONVERT XPUI_STARTMENUPAGE_CHECKBOX                 MUI_INNERTEXT_STARTMENU_CHECKBOX
+
+!insertmacro XPUI_CONVERT XPUI_INSTFILESPAGE_DONE_TITLE               MUI_TEXT_FINISH_TITLE
+!insertmacro XPUI_CONVERT XPUI_INSTFILESPAGE_DONE_SUBTITLE            MUI_TEXT_FINISH_SUBTITLE
+
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP                        MUI_FINISHPAGE_INFO_TITLE
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT                            MUI_FINISHPAGE_INFO_TEXT
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_RUN                        MUI_FINISHPAGE_INFO_TEXT
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT                     MUI_FINISHPAGE_INFO_REBOOT
+!ifdef MUI_FINISHPAGE_RUN
+  !ifndef XPUI_${XPUI_UN}FINISHPAGE_RUN
+    !define XPUI_${XPUI_UN}FINISHPAGE_RUN
+  !endif
+  !ifndef XPUI_${XPUI_UN}FINISHPAGE_RUN_FILE
+    !define XPUI_${XPUI_UN}FINISHPAGE_RUN_FILE "${MUI_FINISHPAGE_RUN}"
+  !endif
+!endif
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_RUN_FUNCTION                    MUI_FINISHPAGE_RUN_FUNCTION
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_RUN                    MUI_FINISHPAGE_RUN_TEXT
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_DOCS                            MUI_FINISHPAGE_SHOWREADME
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_DOCS_FILE                       MUI_FINISHPAGE_SHOWREADME
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_DOCS                   MUI_FINISHPAGE_SHOWREADME_TEXT
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_NOREBOOT                        MUI_FINISHPAGE_NOREBOOTSUPPORT
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_LINK_TEXT                       MUI_FINISHPAGE_LINK
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_LINK_LOCATION                   MUI_FINISHPAGE_LINK_LOCATION
+
+!ifdef MUI_FINISHPAGE_LINK
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_LINK ""
+  !insertmacro XPUI_SET XPUI_${XPUI_UN}FINISHPAGE_LINK_TEXT `${MUI_FINISHPAGE_LINK}`
+  !ifdef MUI_FINISHPAGE_LINK_LOCATION
+    !insertmacro XPUI_DEFAULT "XPUI_FINISHPAGE_LINK_LOCATION" "${MUI_FINISHPAGE_LINK_LOCATION}"
+  !endif
+!endif
+
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP                    MUI_TEXT_FINISH_INFO_TITLE
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP_ALT                MUI_TEXT_FINISH_INFO_TITLE
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT                        MUI_TEXT_FINISH_INFO_TEXT
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT                 MUI_TEXT_FINISH_INFO_REBOOT
+
+!insertmacro XPUI_CONVERT XPUI_FINISH_TEXT_TOP                        MUI_TEXT_FINISH_INFO_TITLE
+!insertmacro XPUI_CONVERT XPUI_FINISH_TEXT                            MUI_TEXT_FINISH_INFO_TEXT
+!insertmacro XPUI_CONVERT XPUI_FINISH_TEXT_REBOOT                     MUI_TEXT_FINISH_INFO_REBOOT
+!insertmacro XPUI_CONVERT XPUI_FINISH_RUN                             MUI_TEXT_FINISH_RUN
+!insertmacro XPUI_CONVERT XPUI_FINISH_RUN_FILE                        MUI_TEXT_FINISH_RUN
+!insertmacro XPUI_CONVERT XPUI_FINISH_RUN_FUNCTION                    MUI_TEXT_FINISH_RUN_FUNCTION
+!insertmacro XPUI_CONVERT XPUI_FINISH_CHECKBOX_RUN                    MUI_TEXT_FINISH_RUN_TEXT
+!insertmacro XPUI_CONVERT XPUI_FINISH_DOCS                            MUI_TEXT_FINISH_SHOWREADME
+!insertmacro XPUI_CONVERT XPUI_FINISH_DOCS_FILE                       MUI_TEXT_FINISH_SHOWREADME
+!insertmacro XPUI_CONVERT XPUI_FINISH_CHECKBOX_DOCS                   MUI_TEXT_FINISH_SHOWREADME_TEXT
+!insertmacro XPUI_CONVERT XPUI_FINISH_NOREBOOT                        MUI_TEXT_FINISH_NOREBOOTSUPPORT
+!insertmacro XPUI_CONVERT XPUI_FINISH_LINK                            MUI_TEXT_FINISH_LINK
+!insertmacro XPUI_CONVERT XPUI_FINISH_LINK_TEXT                       MUI_TEXT_FINISH_LINK
+
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP                    MUI_TEXT_FINISH_INFO_TITLE
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP_ALT                MUI_TEXT_FINISH_INFO_TITLE
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT                        MUI_TEXT_FINISH_INFO_TEXT
+!insertmacro XPUI_CONVERT XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT                 MUI_TEXT_FINISH_INFO_REBOOT
+
+!insertmacro XPUI_CONVERT XPUI_UNINSTCONFIRMPAGE_NSIS_TEXT_TOP        MUI_UNCONFIRMPAGE_TEXT_TOP
+!insertmacro XPUI_CONVERT XPUI_UNINSTCONFIRMPAGE_NSIS_TEXT_FOLDER     MUI_UNCONFIRMPAGE_TEXT_LOCATION
+
+!insertmacro XPUI_CONVERT XPUI_LANGDLL_REGISTRY_ROOT                  MUI_LANGDLL_REGISTRY_ROOT
+!insertmacro XPUI_CONVERT XPUI_LANGDLL_REGISTRY_KEY                   MUI_LANGDLL_REGISTRY_KEY
+!insertmacro XPUI_CONVERT XPUI_LANGDLL_REGISTRY_VALUE                 MUI_LANGDLL_REGISTRY_VALUENAME
+
+!insertmacro XPUI_CONVERT XPUI_BUTTONTEXT_CLOSE                       MUI_BUTTONTEXT_FINISH
+
+!insertmacro XPUI_PAGE_TITLE_CONVERT                                  WELCOME
+!insertmacro XPUI_PAGE_TITLE_CONVERT                                  LICENSE
+!insertmacro XPUI_PAGE_TITLE_CONVERT                                  COMPONENTS
+!insertmacro XPUI_PAGE_TITLE_CONVERT                                  DIRECTORY
+!insertmacro XPUI_PAGE_TITLE_CONVERT                                  STARTMENU
+
+!insertmacro XPUI_CONVERT XPUI_INSTFILESPAGE_TITLE MUI_TEXT_INSTALLING_TITLE
+!insertmacro XPUI_CONVERT XPUI_INSTFILESPAGE_SUBTITLE MUI_TEXT_INSTALLING_SUBTITLE
+
+!insertmacro XPUI_PAGE_TITLE_CONVERT FINISH
+!insertmacro XPUI_PAGE_TITLE_CONVERT ABORT
+
+!verbose pop
+
+!macroend
+
+# MUI REPLACEMENT MACROS
+
+!macro MUI_PAGE_WELCOME
+  !ifdef UMUI_USE_ALTERNATE_PAGE
+    !insertmacro XPUI_PAGE_WELCOME2
+  !else
+    !insertmacro XPUI_PAGE_WELCOME
+  !endif
+!macroend
+
+!macro MUI_PAGE_LICENSE FILE
+  !insertmacro XPUI_PAGE_LICENSE `${FILE}`
+!macroend
+
+!macro MUI_PAGE_COMPONENTS
+  !insertmacro XPUI_PAGE_COMPONENTS
+!macroend
+
+!macro MUI_PAGE_DIRECTORY
+  !insertmacro XPUI_PAGE_DIRECTORY
+!macroend
+
+!macro MUI_PAGE_STARTMENU ID VAR
+  !insertmacro XPUI_PAGE_STARTMENU `${ID}` `${VAR}`
+!macroend
+
+!macro MUI_PAGE_INSTFILES
+  !insertmacro XPUI_PAGE_INSTFILES
+!macroend
+
+!macro MUI_PAGE_FINISH
+  !ifdef UMUI_USE_ALTERNATE_PAGE
+    !insertmacro XPUI_SET XPUI_${XPUI_UN}FINISHPAGE_TEXT_USE_TOP_ALT ``
+  !endif
+  !insertmacro XPUI_PAGE_FINISH
+!macroend
+
+!macro MUI_UNPAGE_WELCOME
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_WELCOME
+!macroend
+
+!macro MUI_UNPAGE_LICENSE FILE
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_LICENSE `${FILE}`
+!macroend
+
+!macro MUI_UNPAGE_COMPONENTS
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_COMPONENTS
+!macroend
+
+!macro MUI_UNPAGE_DIRECTORY
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_DIRECTORY
+!macroend
+
+!macro MUI_UNPAGE_STARTMENU ID VAR
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_STARTMENU `${ID}` `${VAR}`
+!macroend
+
+!macro MUI_UNPAGE_CONFIRM
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_UNINSTCONFIRM_NSIS
+!macroend
+
+!macro MUI_UNPAGE_INSTFILES
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_INSTFILES
+!macroend
+
+!macro MUI_UNPAGE_FINISH
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_FINISH
+!macroend
+
+!macro UMUI_PAGE_CONFIRM
+  !insertmacro XPUI_PAGEMODE_INST
+  !insertmacro XPUI_PAGE_INSTCONFIRM
+!macroend
+
+!macro UMUI_UNPAGE_CONFIRM
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_INSTCONFIRM
+!macroend
+
+!macro UMUI_PAGE_ABORT
+  !insertmacro XPUI_PAGEMODE_INST
+  !insertmacro XPUI_PAGE_ABORT
+
+  !insertmacro XPUI_UNSET UMUI_ABORTPAGE_LINK
+  !insertmacro XPUI_UNSET UMUI_ABORTPAGE_LINK_LOCATION
+!macroend
+
+!macro UMUI_UNPAGE_ABORT
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !insertmacro XPUI_PAGE_ABORT
+
+  !insertmacro XPUI_UNSET UMUI_ABORTPAGE_LINK
+  !insertmacro XPUI_UNSET UMUI_ABORTPAGE_LINK_LOCATION
+!macroend
+
+!macro UMUI_LEFT_SETTIME M
+  !insertmacro XPUI_LEFT_SETTIME `${M} minutes`
+!macroend
+
+!macro UMUI_CONFIRMPAGE_TEXTBOX_ADDLINE NULL
+!macroend
+
+!macro UMUI_PAGE_LEFTMESSAGEBOX T C M
+
+  !insertmacro XPUI_CREATEID
+  Page custom umuilmb.c.${XPUI_UNIQUEID} umuilmb.l.${XPUI_UNIQUEID} ` `
+
+  Function umuilmb.c.${XPUI_UNIQUEID}
+
+    StrCmp $XPUI_ABORTED 1 `` +2
+    Abort
+
+    !insertmacro XPUI_HEADER_TEXT ` ` ` `
+    !insertmacro XPUI_LEFT_MESSAGE `${C}` `${M}` `${T}`
+  FunctionEnd
+
+  Function umuilmb.l.${XPUI_UNIQUEID}
+    !ifdef UMUI_LEFTMESSAGEBOX_VAR
+      ReadINIStr `$${UMUI_LEFTMESSAGEBOX_VAR}` `$PLUGINSDIR\MBSide.ini` `Settings` `State`
+    !endif
+
+    !ifdef UMUI_LEFTMESSAGEBOX_LEFTFUNC
+      Call `${UMUI_LEFTMESSAGEBOX_LEFTFUNC}`
+      !undef UMUI_LEFTMESSAGEBOX_LEFTFUNC
+    !endif
+
+    !ifdef UMUI_LEFT_MESSAGEBOX_LEFTFUNC
+      Call `${UMUI_LEFT_MESSAGEBOX_LEFTFUNC}`
+      !undef UMUI_LEFT_MESSAGEBOX_LEFTFUNC
+    !endif
+
+  FunctionEnd
+
+  !insertmacro XPUI_UNSET UMUI_LEFT_MESSAGEBOX_LEFTFUNC
+!macroend
+
+!macro UMUI_UNPAGE_LEFTMESSAGEBOX T C M
+
+  !insertmacro XPUI_CREATEID
+  UninstPage custom un.umuilmb.c.${XPUI_UNIQUEID} un.umuilmb.l.${XPUI_UNIQUEID} ` `
+
+  Function un.umuilmb.c.${XPUI_UNIQUEID}
+    !insertmacro XPUI_HEADER_TEXT ` ` ` `
+    !insertmacro XPUI_LEFT_MESSAGE `${C}` `${M}` `${T}`
+  FunctionEnd
+
+  Function un.umuilmb.l.${XPUI_UNIQUEID}
+    !ifdef UMUI_LEFTMESSAGEBOX_VAR
+      ReadINIStr `$${UMUI_LEFTMESSAGEBOX_VAR}` `$PLUGINSDIR\MBSide.ini` `Settings` `State`
+    !endif
+
+    !ifdef UMUI_LEFTMESSAGEBOX_LEFTFUNC
+      Call `${UMUI_LEFTMESSAGEBOX_LEFTFUNC}`
+      !undef UMUI_LEFTMESSAGEBOX_LEFTFUNC
+    !endif
+
+    !ifdef UMUI_LEFT_MESSAGEBOX_LEFTFUNC
+      Call `${UMUI_LEFT_MESSAGEBOX_LEFTFUNC}`
+      !undef UMUI_LEFT_MESSAGEBOX_LEFTFUNC
+    !endif
+
+  FunctionEnd
+
+!macroend
+
+!macro MUI_LANGUAGE LANG
+  !insertmacro XPUI_LANGUAGE `${LANG}`
+!macroend
+
+!macro MUI_FUNCTION_DESCRIPTION_BEGIN
+  !insertmacro XPUI_FUNCTION_DESCRIPTION_BEGIN
+!macroend
+
+!macro MUI_DESCRIPTION_TEXT SEC TEXT
+  !insertmacro XPUI_DESCRIPTION_TEXT `${SEC}` `${TEXT}`
+!macroend
+
+!macro MUI_FUNCTION_DESCRIPTION_END
+  !insertmacro XPUI_FUNCTION_DESCRIPTION_END
+!macroend
+
+!macro MUI_HEADER_TEXT T S
+  !insertmacro XPUI_HEADER_TEXT `${T}` `${S}`
+!macroend
+
+!macro MUI_STARTMENU_WRITE_BEGIN ID
+  !insertmacro XPUI_STARTMENU_WRITE_BEGIN '${ID}'
+!macroend
+
+!macro MUI_STARTMENU_WRITE_END
+  !insertmacro XPUI_STARTMENU_WRITE_END
+!macroend
+
+!macro MUI_STARTMENU_GETFOLDER ID VAR
+
+  !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME
+
+    ReadRegStr $XPUI_TEMP1 `${MUI_STARTMENUPAGE_REGISTRY_ROOT}` `${MUI_STARTMENUPAGE_REGISTRY_KEY}` `${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}`
+      StrCmp $XPUI_TEMP1 `` +3
+        StrCpy `${VAR}` $XPUI_TEMP1
+        Goto +2
+
+        StrCpy `${VAR}` `${XPUI_STARTMENUPAGE_FOLDER}`
+
+   !else
+
+     StrCpy `${VAR}` `${XPUI_STARTMENUPAGE_FOLDER}`
+
+   !endif
+
+!macroend
+
+!macro MUI_RESERVEFILE_LANGDLL
+
+  !verbose push
+  !verbose ${MUI_VERBOSE}
+
+  ReserveFile `${NSISDIR}\Plugins\LangDLL.dll`
+
+  !verbose pop
+
+!macroend
+
+!ifdef MUI_ABORTWARNING
+!define XPUI_ABORTWARNING
+!endif
+
+!ifdef MUI_UNABORTWARNING
+  !define XPUI_UNABORTWARNING
+!endif
+
+!macro MUI_LANGDLL_DISPLAY
+  !insertmacro XPUI_LANGDLL_DISPLAY
+!macroend
+
+!macro MUI_UNGETLANGUAGE
+  !insertmacro XPUI_UNGETLANGUAGE
+!macroend
+
+!macro MUI_LANGUAGEFILE_BEGIN L
+  !insertmacro XPUI_LANGUAGEFILE_BEGIN ${L}
+!macroend
+
+!macro MUI_LANGUAGEFILE_END
+  !insertmacro XPUI_LANGUAGEFILE_END
+!macroend
+
+# FIXES (DON'T EDIT)
+
+!ifdef MUI_COMPONENTSPAGE_CHECKBITMAP
+  !warning `The XPUI system uses a normal CheckBitmap command.`
+  CheckBitmap `${MUI_COMPONENTSPAGE_CHECKBITMAP}`
+!endif
+
+!ifdef MUI_FINISHPAGE_NOAUTOCLOSE
+  AutoCloseWindow false
+!endif
+
+!ifdef MUI_UNFINISHPAGE_NOAUTOCLOSE
+  AutoCloseWindow false
+!endif
+
+!ifdef MUI_COMPONENTSPAGE_TEXT_TOP
+  !ifndef MUI_COMPONENTSPAGE_TEXT_COMPLIST
+    !ifndef MUI_COMPONENTSPAGE_TEXT_INSTTYPE
+      ComponentText `${MUI_COMPONENTSPAGE_TEXT_TOP}`
+    !endif
+  !endif
+!endif
+
+!ifndef MUI_COMPONENTSPAGE_TEXT_TOP
+  !ifdef MUI_COMPONENTSPAGE_TEXT_COMPLIST
+    !ifndef MUI_COMPONENTSPAGE_TEXT_INSTTYPE
+      ComponentText `` `${MUI_COMPONENTSPAGE_TEXT_TOP}`
+    !endif
+  !endif
+!endif
+
+!ifndef MUI_COMPONENTSPAGE_TEXT_TOP
+  !ifndef MUI_COMPONENTSPAGE_TEXT_COMPLIST
+    !ifdef MUI_COMPONENTSPAGE_TEXT_INSTTYPE
+      ComponentText `` `` `${MUI_COMPONENTSPAGE_TEXT_TOP}`
+    !endif
+  !endif
+!endif
+
+!ifdef MUI_COMPONENTSPAGE_TEXT_TOP
+  !ifdef MUI_COMPONENTSPAGE_TEXT_COMPLIST
+    !ifndef MUI_COMPONENTSPAGE_TEXT_INSTTYPE
+      ComponentText `${MUI_COMPONENTSPAGE_TEXT_TOP}` `${MUI_COMPONENTSPAGE_TEXT_COMPLIST}`
+    !endif
+  !endif
+!endif
+
+!ifdef MUI_COMPONENTSPAGE_TEXT_TOP
+  !ifndef MUI_COMPONENTSPAGE_TEXT_COMPLIST
+    !ifdef MUI_COMPONENTSPAGE_TEXT_INSTTYPE
+      ComponentText `${MUI_COMPONENTSPAGE_TEXT_TOP}` `` `${MUI_COMPONENTSPAGE_TEXT_INSTTYPE}`
+    !endif
+  !endif
+!endif
+
+!ifdef MUI_COMPONENTSPAGE_TEXT_TOP
+  !ifdef MUI_COMPONENTSPAGE_TEXT_COMPLIST
+    !ifdef MUI_COMPONENTSPAGE_TEXT_INSTTYPE
+      ComponentText `${MUI_COMPONENTSPAGE_TEXT_TOP}` `${MUI_COMPONENTSPAGE_TEXT_COMPLIST}` `${MUI_COMPONENTSPAGE_TEXT_INSTTYPE}`
+    !endif
+  !endif
+!endif
+
+!ifndef MUI_COMPONENTSPAGE_TEXT_TOP
+  !ifdef MUI_COMPONENTSPAGE_TEXT_COMPLIST
+    !ifdef MUI_COMPONENTSPAGE_TEXT_INSTTYPE
+      ComponentText `` `${MUI_COMPONENTSPAGE_TEXT_COMPLIST}` `${MUI_COMPONENTSPAGE_TEXT_INSTTYPE}`
+    !endif
+  !endif
+!endif
+
+!ifdef UMUI_USE_ALTERNATE_PAGE
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_TEXT_USE_TOP_ALT ``
+!endif
+
+!ifdef MUI_WELCOMEFINISHPAGE_INI | UMUI_WELCOMEFINISHABORTPAGE_INI
+  !ifndef XPUI_WARNING_MUI_IO
+    !warning `The ExperienceUI does not support custom InstallOptions INI files for pages (yet).  When (if?) this is added, there will be an individual define for each page.`
+    !define XPUI_WARNING_MUI_IO
+  !endif
+!endif
+
+!ifdef MUI_UNWELCOMEFINISHPAGE_INI | UMUI_UNWELCOMEFINISHABORTPAGE_INI
+  !ifndef XPUI_WARNING_MUI_IO
+    !warning `The ExperienceUI does not support custom InstallOptions INI files for pages (yet).  When (if?) this is added, there will be an individual define for each page.`
+    !define XPUI_WARNING_MUI_IO
+  !endif
+!endif
+
+!ifdef MUI_FINISHPAGE_LINK_LOCATION
+
+  !insertmacro XPUI_CREATEID
+  !define XPUI_${XPUI_UN}FINISHPAGE_LINK_FUNCTION muiOpenLinkLocation.${XPUI_UNIQUEID}
+
+  Function muiOpenLinkLocation.${XPUI_UNIQUEID}
+    ExecShell open `${MUI_FINISHPAGE_LINK_LOCATION}`
+  FunctionEnd
+
+!endif
+
+!insertmacro XPUI_LANGUAGE_CONVERT
+
+; ********************************************
+; END MODERNUI/ULTRAMODERNUI CONVERSION SCRIPT