Contrib/ExperienceUI/XPUI.nsh
changeset 0 d5ce4c64ef88
child 2 ccebbad46f6a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Contrib/ExperienceUI/XPUI.nsh	Tue Oct 16 00:07:41 2007 -0400
@@ -0,0 +1,3219 @@
+; NSIS ExperienceUI User Interface version 1.11
+; Macro System and Main Logic
+; Written by Dan Fuhry
+
+; Copyright İ 2004-2006 Dan Fuhry
+; Portions written by Joost Verburg
+; Copyright İ 2002-2004 Joost Verburg
+
+; This program is free software; you redistribute and/or modify it
+; under the terms of the zlib/libpng license.
+
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; merchantability or fitness for a particular purpose.  See the
+; zlib/libpng license for details.
+
+; You should have received a copy of the zlib/libpng license with
+; this program; if not, visit http://xpui.sf.net/docs/?start=legal.htm.
+
+!ifdef XPUI_INCLUDED
+!warning `The ExperienceUI was included multiple times. Please include it only once in your script.`
+!endif
+
+!ifndef XPUI_INCLUDED
+
+; We're in. Set verbosity.
+
+!ifndef XPUI_VERBOSE
+  !define XPUI_VERBOSE 1
+!endif
+
+!verbose push
+!verbose ${XPUI_VERBOSE}
+
+!define XPUI_INCLUDED
+!define XPUI_VERSION 1.11
+
+!ifndef XPUI_SYSDIR
+  !define XPUI_SYSDIR "${NSISDIR}\Contrib\ExperienceUI"
+!endif
+
+; Do some pretty stuff
+
+!verbose 4
+
+; my infamous (new) ASCII art
+!ifndef XPUI_SILENT
+!echo "\
++-------------------------------------------------------------------------------------------------+$\n\
+|                                                                             /ŻŻ|  /ŻŻ|  /ŻŻ|    |$\n\
+| |ŻŻŻŻŻŻŻ|                         _                           |Ż|  |Ż| |Ż| / / | / / | / / |    |$\n\
+| | |ŻŻŻŻŻ                         |_|                          | |  | | | |  Ż| |  Ż| |  Ż| |    |$\n\
+| |  ŻŻŻ|   _  _        ___   ___   _   ___   ____    ____  ___ | |  | | | |   | |   | |   | |    |$\n\
+| | |ŻŻŻ    \\// |ŻŻŻ\ / __\ |  _| | | / __\ |  _  \ / __/ / __\| |__| | | |   | |   | |   | |    |$\n\
+| |  ŻŻŻŻŻ| //\\ | __/ \___/ |_|   |_| \___/ |_| |_| \___\ \___/\______/ |_|   |_| O |_|   |_|    |$\n\
+|  ŻŻŻŻŻŻŻ  Ż  Ż |_|                                                       [ A better installer ] |$\n\
++-------------------------------------------------------------------------------------------------+$\n"
+
+!echo `NSIS ExperienceUI User Interface version ${XPUI_VERSION}   $\n\
+       Copyright İ 2004-2005 Dan Fuhry                            $\n\
+                                                                  $\n\
+       Portions written by Joost Verburg                          $\n\
+       Copyright İ 2002-2004 Joost Verburg                        $\n\
+                                                                  $\n\
+       XPUI: Processing XPUI code...                       $\n`
+
+!endif
+
+!verbose ${XPUI_VERBOSE}
+
+; Compiler check
+
+!define XPUI_NSIS_REQUIRED_FLAGS "NSIS_CONFIG_VISIBLE_SUPPORT | \
+                                  NSIS_CONFIG_ENHANCEDUI_SUPPORT | \
+                                  NSIS_SUPPORT_CODECALLBACKS | \
+                                  NSIS_SUPPORT_INTOPTS | \
+                                  NSIS_SUPPORT_STROPTS | \
+                                  NSIS_SUPPORT_STACK | \
+                                  NSIS_SUPPORT_INIFILES | \
+                                  NSIS_SUPPORT_EXECUTE | \
+                                  NSIS_SUPPORT_FILE | \
+                                  NSIS_SUPPORT_DELETE | \
+                                  NSIS_SUPPORT_MESSAGEBOX | \
+                                  NSIS_CONFIG_PLUGIN_SUPPORT"
+
+  !ifndef ${XPUI_NSIS_REQUIRED_FLAGS}
+          
+    !verbose 4
+    !error   "$\n  ExperienceUI: FATAL: MakeNSIS was compiled without certain options that are required in order for the \
+                ExperienceUI to work.$\n  The compiler options required in order for core ExperienceUI functionality are: \
+                ${XPUI_NSIS_REQUIRED_FLAGS}.$\n  Please remove the ExperienceUI from your script or recompile NSIS to \
+                support these features."
+  !endif
+  
+; Variables
+  
+Var /GLOBAL XPUI_TEMP1
+Var /GLOBAL XPUI_TEMP2
+Var /GLOBAL XPUI_ABORTED
+Var /GLOBAL XPUI_HWND
+Var /GLOBAL XPUI_NOABORTWARNING
+
+; Basic macros
+
+!macro XPUI_DEFAULT S V
+  !ifndef `${S}`
+    !define `${S}` `${V}`
+  !endif
+!macroend
+
+!macro XPUI_SET S V
+  !ifdef `${S}`
+    !undef `${S}`
+  !endif
+  !define `${S}` `${V}`
+!macroend
+
+!macro XPUI_UNSET S
+  !ifdef `${S}`
+    !undef `${S}`
+  !endif
+!macroend
+
+!macro MUI_DEFAULT S V
+  !ifndef `${S}`
+    !define `${S}` `${V}`
+  !endif
+!macroend
+
+!macro XPUI_SET_QUOTE_ALT SYMBOL CONTENT
+  !ifdef "${SYMBOL}"
+    !undef "${SYMBOL}"
+  !endif
+  !define "${SYMBOL}" "${CONTENT}"
+!macroEnd
+
+!macro XPUI_CREATEID
+
+  !ifndef XPUI_UNIQUEID
+    !define XPUI_UNIQUEID ${__LINE__}
+  !endif
+
+  !ifdef XPUI_UNIQUEID
+    !undef XPUI_UNIQUEID
+    !define XPUI_UNIQUEID ${__LINE__}
+  !endif
+
+!macroend
+
+!macro XPUI_CONVERT XPUI MUI
+
+  !ifdef ${MUI}
+    !insertmacro XPUI_SET ${XPUI} `${${MUI}}`
+    !undef ${MUI}
+  !endif
+
+!macroend
+
+!macro XPUI_CONVERT_QUOTE_ALT XPUI MUI
+
+  !ifdef ${MUI}
+    !insertmacro XPUI_SET_QUOTE_ALT ${XPUI} "${${MUI}}"
+  !endif
+
+!macroend
+
+!macro XPUI_CONTROL_SKIN HWND
+  !ifdef XPUI_FASTERSKINNING
+    SetCtlColors ${HWND} `${XPUI_TEXT_COLOR}` `${XPUI_TEXT_BGCOLOR}`
+  !else
+  !ifdef XPUI_INTERNAL_INTERFACE_INSERTED
+    SetCtlColors ${HWND} `${XPUI_TEXT_COLOR}` `${XPUI_TEXT_BGCOLOR}`
+  !else
+    !ifndef XPUI_EXTERNAL_SKINNER
+      Push "${HWND}"
+      Call ${XPUI_UNFUNC}xpui.SkinControl
+      Pop "${HWND}"
+    !endif
+  !endif
+  !endif
+!macroend
+
+!macro XPUI_CONTROL_SKIN_LIGHT HWND
+  !ifdef XPUI_FASTERSKINNING
+    SetCtlColors ${HWND} `${XPUI_TEXT_LIGHTCOLOR}` `${XPUI_TEXT_BGCOLOR}`
+  !else
+  !ifdef XPUI_INTERNAL_INTERFACE_INSERTED
+    SetCtlColors ${HWND} `${XPUI_TEXT_LIGHTCOLOR}` `${XPUI_TEXT_BGCOLOR}`
+  !else
+  !ifndef XPUI_EXTERNAL_SKINNER
+  Push "${HWND}"
+  Call ${XPUI_UNFUNC}xpui.SkinControl.light
+  Pop "${HWND}"
+  !endif
+  !endif
+  !endif
+!macroend
+
+!macro XPUI_CONTROL_SKIN_TRANS HWND
+  !ifdef XPUI_FASTERSKINNING
+    SetCtlColors ${HWND} `${XPUI_TEXT_COLOR}` `Transparent`
+  !else
+  !ifdef XPUI_INTERNAL_INTERFACE_INSERTED
+    SetCtlColors ${HWND} `${XPUI_TEXT_COLOR}` `Transparent`
+  !else
+  !ifndef XPUI_EXTERNAL_SKINNER
+  Push "${HWND}"
+  Call ${XPUI_UNFUNC}xpui.SkinControl.trans
+  Pop "${HWND}"
+  !endif
+  !endif
+  !endif
+!macroend
+
+!macro XPUI_CONTROL_SKIN_LIGHT_TRANS HWND
+  !ifdef XPUI_FASTERSKINNING
+    SetCtlColors ${HWND} `${XPUI_TEXT_LIGHTCOLOR}` `Transparent`
+  !else
+  !ifdef XPUI_INTERNAL_INTERFACE_INSERTED
+    SetCtlColors ${HWND} `${XPUI_TEXT_LIGHTCOLOR}` `Transparent`
+  !else
+  !ifndef XPUI_EXTERNAL_SKINNER  
+  Push "${HWND}"
+  Call ${XPUI_UNFUNC}xpui.SkinControl.light.trans
+  Pop "${HWND}"
+  !endif
+  !endif
+  !endif
+!macroend
+
+!macro XPUI_PAGE_CUSTOMFUNCTION Z
+
+  !ifdef XPUI_PAGE_CUSTOMFUNCTION_${Z}
+    Call `${XPUI_PAGE_CUSTOMFUNCTION_${Z}}`
+    !undef XPUI_PAGE_CUSTOMFUNCTION_${Z}
+  !endif
+  
+  ; Modern UI Compatible
+  !ifdef MUI_PAGE_CUSTOMFUNCTION_${Z}
+    Call `${MUI_PAGE_CUSTOMFUNCTION_${Z}}`
+    !undef MUI_PAGE_CUSTOMFUNCTION_${Z}
+  !endif
+  
+!macroend
+
+!macro XPUI_CONTROL_SKIN_PAGE HWND
+  
+  !ifndef XPUI_EXTERNAL_SKINNER
+  !ifndef XPUI_BGIMAGE
+  !insertmacro XPUI_CONTROL_SKIN ${HWND}
+  !else
+  !insertmacro XPUI_CONTROL_SKIN_TRANS ${HWND}
+  !endif
+  !endif
+  
+!macroend
+
+!macro XPUI_PAGECOLOR_INIT ID
+
+  Push $XPUI_HWND
+  FindWindow $XPUI_HWND "#32770" "" $HWNDPARENT
+  GetDlgItem $XPUI_HWND $XPUI_HWND ${ID}
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+  Pop $XPUI_HWND
+
+!macroend
+
+!macro XPUI_PAGEMODE_INST
+  !echo `XPUI Page Mode: INSTALL`
+  !insertmacro XPUI_SET XPUI_PAGEMODE_INSERTED ``
+  !insertmacro XPUI_SET XPUI_UN ``
+  !insertmacro XPUI_SET XPUI_UNINST ``
+  !insertmacro XPUI_SET XPUI_UNFUNC ``
+  !insertmacro XPUI_SET XPUI_PAGEMODE `Install`
+!macroend
+
+!macro XPUI_PAGEMODE_UNINST
+  !echo `XPUI Page Mode: UNINSTALL`
+  !insertmacro XPUI_SET XPUI_PAGEMODE_INSERTED ``
+  !insertmacro XPUI_SET XPUI_UN `UN`
+  !insertmacro XPUI_SET XPUI_UNINST `Uninst`
+  !insertmacro XPUI_SET XPUI_UNFUNC `un.`
+  !insertmacro XPUI_SET XPUI_PAGEMODE `Uninstall`
+  
+  !ifndef XPUI_UNINSTALLER
+    !define XPUI_UNINSTALLER
+  !endif
+!macroend
+
+!macro XPUI_PAGEMODE_PUSH
+  !insertmacro XPUI_SET XPUI_UN_PUSHED "${XPUI_UN}"
+  !insertmacro XPUI_SET XPUI_UNINST_PUSHED "${XPUI_UNINST}"
+  !insertmacro XPUI_SET XPUI_UNFUNC_PUSHED "${XPUI_UNFUNC}"
+!macroend
+
+!macro XPUI_PAGEMODE_POP
+  !insertmacro XPUI_SET XPUI_UN "${XPUI_UN_PUSHED}"
+  !insertmacro XPUI_SET XPUI_UNINST "${XPUI_UNINST_PUSHED}"
+  !insertmacro XPUI_SET XPUI_UNFUNC "${XPUI_UNFUNC_PUSHED}"
+!macroend
+
+!macro XPUI_HEADER_TEXT T S
+  Push $XPUI_TEMP1
+  GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1037
+  SendMessage $XPUI_TEMP1 0xC 0 `STR:${T}`
+  GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1038
+  SendMessage $XPUI_TEMP1 0xC 0 `STR:${S}`
+  !ifdef TEMP
+    !define TEMP_PUSH `${TEMP}`
+    !undef TEMP
+  !endif
+  !ifdef XPUI_HEADERIMAGE_NORESIZETOFIT
+    !define TEMP " "
+  !else
+    !define TEMP /RESIZETOFIT
+  !endif
+  !ifndef XPUI_BGIMAGE
+  SetBrandingImage /IMGID=1046 ${TEMP} "$PLUGINSDIR\Header.bmp" ; ...finally...
+  !else
+  SetBrandingImage /IMGID=1099 ${TEMP} "$PLUGINSDIR\BgImage.bmp"
+  !endif
+  !undef TEMP
+  !ifdef TEMP_PUSH
+    !define TEMP `${TEMP_PUSH}`
+    !undef TEMP_PUSH
+  !endif
+  Pop $XPUI_TEMP1
+!macroend
+
+!macro XPUI_USERABORT
+  StrCmp $XPUI_NOABORTWARNING 1 +7
+  IfFileExists $PLUGINSDIR\Finish.ini `` +3
+  WriteINIStr $PLUGINSDIR\Finish.ini `Field 1` State 0
+  WriteINIStr $PLUGINSDIR\Finish.ini `Field 2` State 0
+  StrCpy $XPUI_ABORTED 1
+  SendMessage $HWNDPARENT `0x408` `1` ``
+  Abort
+!macroend
+
+!macro XPUI_INNERDIALOG_TEXT TEXT ID
+
+  Push $XPUI_HWND
+  FindWindow $XPUI_HWND "#32770" "" $HWNDPARENT
+  GetDlgItem $XPUI_HWND $XPUI_HWND `${ID}`
+  SendMessage $XPUI_HWND 0xC 0 `STR:${TEXT}`
+  Pop $XPUI_HWND
+
+!macroend
+
+!ifdef XPUI_WANSIS
+  !ifndef XPUI_EXTERNAL_SKINNER
+    !define XPUI_EXTERNAL_SKINNER
+  !endif
+!endif
+
+; Install Options
+
+!insertmacro XPUI_DEFAULT XPUI_INSTALLOPTIONS_MAXFIELD 1250
+
+!macro XPUI_INSTALLOPTIONS_EXTRACT FILE
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  InitPluginsDir
+  File `/oname=$PLUGINSDIR\${FILE}` `${FILE}`
+  !insertmacro XPUI_INSTALLOPTIONS_WRITE `${FILE}` `Settings` `RTL` `$(^RTL)`
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_EXTRACT_AS FILE FILENAME
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  InitPluginsDir
+  File `/oname=$PLUGINSDIR\${FILENAME}` `${FILE}`
+  !insertmacro XPUI_INSTALLOPTIONS_WRITE `${FILENAME}` `Settings` `RTL` `$(^RTL)`
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_DISPLAY FILE
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  !insertmacro XPUI_CREATEID
+  StrCmp $XPUI_ABORTED 1 `` +2
+  Abort
+  WriteINIStr `$PLUGINSDIR\${FILE}` `Settings` `RTL` `$(^RTL)`
+  InstallOptions::initDialog /NOUNLOAD `$PLUGINSDIR\${FILE}`
+  Pop $XPUI_HWND
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+  LockWindow on
+  StrCpy $XPUI_TEMP2 1199
+  XPUI.loop.setctl.${XPUI_UNIQUEID}:
+  IntOp $XPUI_TEMP2 $XPUI_TEMP2 + 1
+  GetDlgItem $XPUI_TEMP1 $XPUI_HWND $XPUI_TEMP2
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+  IntCmp $XPUI_TEMP2 ${XPUI_INSTALLOPTIONS_MAXFIELD} `` XPUI.loop.setctl.${XPUI_UNIQUEID}
+  GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1018
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+  SetBrandingImage /IMGID=1019 /RESIZETOFIT "$PLUGINSDIR\page.bmp"
+  LockWindow off
+  InstallOptions::show
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_DISPLAY_RETURN FILE
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  !insertmacro XPUI_CREATEID
+  StrCmp $XPUI_ABORTED 1 `` +2
+  Abort
+  WriteINIStr `$PLUGINSDIR\${FILE}` `Settings` `RTL` `$(^RTL)`
+  InstallOptions::initDialog /NOUNLOAD `$PLUGINSDIR\${FILE}`
+  Pop $XPUI_HWND
+  LockWindow on
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+  StrCpy $XPUI_TEMP2 1199
+  XPUI.loop.setctl.${XPUI_UNIQUEID}:
+  IntOp $XPUI_TEMP2 $XPUI_TEMP2 + 1
+  GetDlgItem $XPUI_TEMP1 $XPUI_HWND $XPUI_TEMP2
+  StrCmp $XPUI_TEMP1 0 XPUI.done
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+  IntCmp $XPUI_TEMP2 ${XPUI_INSTALLOPTIONS_MAXFIELD} XPUI.done.${XPUI_UNIQUEID} XPUI.loop.setctl.${XPUI_UNIQUEID}
+  XPUI.done.${XPUI_UNIQUEID}:
+  SetBrandingImage /IMGID=1019 /RESIZETOFIT "$PLUGINSDIR\page.bmp"
+  LockWindow off
+  InstallOptions::show
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_INITDIALOG FILE
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  !insertmacro XPUI_CREATEID
+  StrCmp $XPUI_ABORTED 1 `` +2
+  Abort
+  WriteINIStr `$PLUGINSDIR\${FILE}` `Settings` `RTL` `$(^RTL)`
+  InstallOptions::initDialog /NOUNLOAD `$PLUGINSDIR\${FILE}`
+  Pop $XPUI_HWND
+  LockWindow on
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+  StrCpy $XPUI_TEMP2 1199
+  XPUI.loop.setctl.${XPUI_UNIQUEID}:
+  IntOp $XPUI_TEMP2 $XPUI_TEMP2 + 1
+  GetDlgItem $XPUI_TEMP1 $XPUI_HWND $XPUI_TEMP2
+  StrCmp $XPUI_TEMP1 0 XPUI.done.${XPUI_UNIQUEID}
+  !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+  IntCmp $XPUI_TEMP2 ${XPUI_INSTALLOPTIONS_MAXFIELD} XPUI.done.${XPUI_UNIQUEID} XPUI.loop.setctl.${XPUI_UNIQUEID}
+  XPUI.done.${XPUI_UNIQUEID}:
+  SetBrandingImage /IMGID=1019 /RESIZETOFIT "$PLUGINSDIR\page.bmp"
+  LockWindow off
+  Push $XPUI_HWND
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_SHOW
+
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  InstallOptions::show
+  Pop $XPUI_TEMP1
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_SHOW_RETURN
+
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  InstallOptions::show
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_READ VAR FILE SECTION KEY
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  ReadIniStr ${VAR} `$PLUGINSDIR\${FILE}` `${SECTION}` `${KEY}`
+  !verbose pop
+!macroend
+
+!macro XPUI_INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
+
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  WriteIniStr `$PLUGINSDIR\${FILE}` `${SECTION}` `${KEY}` `${VALUE}`
+  !verbose pop
+!macroend
+
+!macro XPUI_RESERVEFILE_INSTALLOPTIONS
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  ReserveFile `${NSISDIR}\Plugins\InstallOptions.dll`
+  !verbose pop
+!macroend
+
+!macro MUI_INSTALLOPTIONS_EXTRACT F
+  !insertmacro XPUI_INSTALLOPTIONS_EXTRACT `${F}`
+!macroend
+
+!macro MUI_INSTALLOPTIONS_EXTRACT_AS O N
+  !insertmacro XPUI_INSTALLOPTIONS_EXTRACT_AS `${O}` `${N}`
+!macroend
+
+!macro MUI_INSTALLOPTIONS_DISPLAY F
+  !insertmacro XPUI_INSTALLOPTIONS_DISPLAY `${F}`
+!macroend
+
+!macro MUI_INSTALLOPTIONS_DISPLAY_RETURN F
+  !insertmacro XPUI_INSTALLOPTIONS_DISPLAY_RETURN `${F}`
+!macroend
+
+!macro MUI_INSTALLOPTIONS_INITDIALOG F
+  !insertmacro XPUI_INSTALLOPTIONS_INITDIALOG `${F}`
+!macroend
+
+!macro MUI_INSTALLOPTIONS_SHOW
+  !insertmacro XPUI_INSTALLOPTIONS_SHOW
+!macroend
+
+!macro MUI_INSTALLOPTIONS_SHOW_RETURN
+  !insertmacro XPUI_INSTALLOPTIONS_SHOW_RETURN
+!macroend
+
+!macro MUI_INSTALLOPTIONS_READ VAR FILE SECTION KEY
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  ReadIniStr ${VAR} `$PLUGINSDIR\${FILE}` `${SECTION}` `${KEY}`
+  !verbose pop
+!macroend
+
+!macro MUI_INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
+
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  WriteIniStr `$PLUGINSDIR\${FILE}` `${SECTION}` `${KEY}` `${VALUE}`
+  !verbose pop
+!macroend
+
+!macro MUI_RESERVEFILE_INSTALLOPTIONS
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  ReserveFile `${NSISDIR}\Plugins\InstallOptions.dll`
+  !verbose pop
+!macroend
+
+; Interface - Compile time settings
+
+!insertmacro XPUI_DEFAULT XPUI_UI          "${XPUI_SYSDIR}\UIs\UI.exe"
+
+ChangeUI all `${XPUI_UI}`
+
+!ifdef XPUI_WANSIS
+  !ifndef XPUI_EXTERNAL_SKINNER
+  !define XPUI_EXTERNAL_SKINNER
+  !endif
+!endif
+
+!ifdef XPUI_BGIMAGE & XPUI_WANSIS
+  !verbose push
+  !verbose 4
+  !warning "ExperienceUI: WARNING: The set of visual features you defined for the installer - XPUI_WANSIS and XPUI_BGIMAGE - does not work.  The ExperienceUI will use WAnsis support only."
+  !undef XPUI_BGIMAGE
+  !verbose pop
+!endif
+
+; Interface - Runtime Settings
+
+!macro XPUI_INTERFACE
+
+  ; Defaults
+  
+  ; Skin Includes
+  !ifdef XPUI_SKIN
+    !ifndef XPUI_SKIN_INCLUDED
+    !define XPUI_SKIN_INCLUDED
+    !verbose push
+    !verbose 3 ; Allow errors to be exposed
+    !include "${XPUI_SYSDIR}\Skins\${XPUI_SKIN}.xpuiskin"
+    !verbose pop
+    !endif
+  !endif
+  
+  ; We'll just assume that if the user defined UMUI_SKIN he wants a UMUI-style installer
+  !ifdef UMUI_SKIN
+    !include "${NSISDIR}\Contrib\UltraModernUI\Skins\${UMUI_SKIN}.nsh"
+    !insertmacro XPUI_LANGUAGE_CONVERT
+  !endif
+  
+  !ifdef XPUI_BGIMAGE & XPUI_WANSIS
+    !verbose 4
+    !warning "ExperienceUI: WARNING: The set of visual features you defined for the installer - XPUI_WANSIS and XPUI_BGIMAGE - does not work.  The ExperienceUI will use WAnsis support only."
+    !undef XPUI_BGIMAGE
+  !endif
+  
+  ; WAnsis settings
+  !ifdef XPUI_WANSIS
+    !insertmacro XPUI_DEFAULT XPUI_WANSIS_SKIN Forum
+    !insertmacro XPUI_DEFAULT XPUI_LEFTLOGO               `${XPUI_SYSDIR}\Skins\${XPUI_WANSIS_SKIN}\LeftLogo.bmp`
+    !insertmacro XPUI_DEFAULT XPUI_BOTTOMIMAGE            ``
+    !insertmacro XPUI_DEFAULT XPUI_UNBOTTOMIMAGE          ``
+    !insertmacro XPUI_DEFAULT XPUI_BOTTOMIMAGE_BMP        `${XPUI_SYSDIR}\Skins\${XPUI_WANSIS_SKIN}\Bottom.bmp`
+    !insertmacro XPUI_DEFAULT XPUI_WANSIS_GEN             `${XPUI_SYSDIR}\Skins\${XPUI_WANSIS_SKIN}\gen.bmp`
+    !insertmacro XPUI_DEFAULT XPUI_WANSIS_GENEX           `${XPUI_SYSDIR}\Skins\${XPUI_WANSIS_SKIN}\genex.bmp`
+    !insertmacro XPUI_DEFAULT XPUI_WANSIS_HEADERIMAGE_BMP `${XPUI_SYSDIR}\Skins\${XPUI_WANSIS_SKIN}\header.bmp`
+    !insertmacro XPUI_DEFAULT XPUI_WANSIS_CHECKS          `${XPUI_SYSDIR}\Skins\${XPUI_WANSIS_SKIN}\checks.bmp`
+    
+    !insertmacro XPUI_DEFAULT XPUI_WANSIS_UI              `${XPUI_SYSDIR}\UIs\WAnsis_UI.exe`
+    
+    ChangeUI all `${XPUI_WANSIS_UI}`
+    CheckBitmap `${XPUI_WANSIS_CHECKS}`
+    
+    !ifndef XPUI_EXTERNAL_SKINNER
+      !define XPUI_EXTERNAL_SKINNER
+    !endif
+    
+    !warning "ExperienceUI: WARNING: WAnsis has been known to be unstable with certain configurations."
+    
+  !endif
+  
+  ; Interface Colors
+  !insertmacro XPUI_DEFAULT XPUI_TEXT_COLOR `0xB4D3EA`
+  !insertmacro XPUI_DEFAULT XPUI_TEXT_BGCOLOR `0x566978`
+  !insertmacro XPUI_DEFAULT XPUI_TEXT_LIGHTCOLOR `0xFFFFFF`
+  
+  !insertmacro XPUI_DEFAULT XPUI_HEADER_TEXT_COLOR "${XPUI_TEXT_COLOR}"
+  
+  ; Icons
+  !insertmacro XPUI_DEFAULT XPUI_ICON `${NSISDIR}\Contrib\Graphics\Icons\XPUI-install.ico`
+  !insertmacro XPUI_DEFAULT XPUI_UNICON `${NSISDIR}\Contrib\Graphics\Icons\XPUI-uninstall.ico`
+
+  !ifdef XPUI_ICON
+  Icon `${XPUI_ICON}`
+  !Endif
+
+  !ifdef XPUI_UNICON
+  UninstallIcon `${XPUI_UNICON}`
+  !Endif
+  
+  ; Check bitmap
+  !ifndef XPUI_WANSIS
+    !insertmacro XPUI_DEFAULT XPUI_CHECKBITMAP "${NSISDIR}\Contrib\Graphics\Checks\Modern.bmp"
+    CheckBitmap "${XPUI_CHECKBITMAP}"
+  !endif
+  
+  ; Header image
+  !insertmacro XPUI_DEFAULT XPUI_HEADERIMAGE `${XPUI_SYSDIR}\Skins\Default\Header.bmp`
+  !insertmacro XPUI_DEFAULT XPUI_UNHEADERIMAGE `${XPUI_HEADERIMAGE}`
+
+  ; Left Logo
+  !insertmacro XPUI_DEFAULT XPUI_LEFTLOGO `${XPUI_SYSDIR}\Skins\Default\LeftBranding.bmp`
+  !insertmacro XPUI_DEFAULT XPUI_UNLEFTLOGO `${XPUI_LEFTLOGO}`
+
+  ; Bottom Image
+  
+  !ifndef XPUI_BOTTOMIMAGE
+    !define XPUI_BOTTOMIMAGE
+  !endif
+  !ifdef XPUI_NOBOTTOMIMAGE
+    !undef XPUI_BOTTOMIMAGE
+  !endif
+
+  !ifndef XPUI_UNBOTTOMIMAGE
+    !define XPUI_UNBOTTOMIMAGE
+  !endif
+  !ifdef XPUI_NOUNBOTTOMIMAGE
+    !undef XPUI_UNBOTTOMIMAGE
+  !endif
+  
+  !ifdef XPUI_BGIMAGE
+    !ifndef XPUI_BOTTOMIMAGE
+      !define XPUI_NOBOTTOMIMAGE
+    !endif
+    !ifndef XPUI_COMPONENTSPAGE_NODESC
+      !define XPUI_COMPONENTSPAGE_NODESC
+    !endif
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_BOTTOMIMAGE_BMP `${XPUI_SYSDIR}\Skins\Default\Bottom.bmp`
+  !insertmacro XPUI_DEFAULT XPUI_UNBOTTOMIMAGE_BMP `${XPUI_BOTTOMIMAGE_BMP}`
+  
+  !ifdef XPUI_BGIMAGE
+    !insertmacro XPUI_DEFAULT XPUI_BGIMAGE_BMP "${XPUI_SYSDIR}\Skins\Default\BgImage.bmp"
+    !insertmacro XPUI_DEFAULT XPUI_BGIMAGE_UI  "${XPUI_SYSDIR}\UIs\BgUI.exe"
+    ChangeUI all `${XPUI_BGIMAGE_UI}`
+  !endif
+
+  ; Branding Text
+  !insertmacro XPUI_DEFAULT XPUI_BRANDINGTEXT ` `
+  !insertmacro XPUI_DEFAULT XPUI_BRANDINGTEXT_COLOR_FG 606060
+  !insertmacro XPUI_DEFAULT XPUI_BRANDINGTEXT_COLOR_BG 808080
+  
+  ; BG Gradient
+  !ifndef XPUI_DISABLEBG
+    !ifdef XPUI_BGGRADIENT
+      !ifndef XPUI_BGGRADIENT_CUSTOMCOLORS
+        BGGradient ${XPUI_TEXT_COLOR} ${XPUI_TEXT_BGCOLOR} ${XPUI_TEXT_LIGHTCOLOR}
+      !endif
+    !ifdef XPUI_BGGRADIENT_CUSTOMCOLORS
+      !insertmacro XPUI_DEFAULT XPUI_BGGRADIENT_CUSTOMCOLORS_TOP `${XPUI_TEXT_COLOR}`
+      !insertmacro XPUI_DEFAULT XPUI_BGGRADIENT_CUSTOMCOLORS_BOTTOM `${XPUI_TEXT_BGCOLOR}`
+        !insertmacro XPUI_DEFAULT XPUI_BGGRADIENT_CUSTOMCOLORS_TEXT `${XPUI_TEXT_LIGHTCOLOR}`
+        BGGradient `${XPUI_BGGRADIENT_CUSTOMCOLORS_TOP}` `${XPUI_BGGRADIENT_CUSTOMCOLORS_BOTTOM}` `${XPUI_BGGRADIENT_CUSTOMCOLORS_TEXT}`
+      !endif
+    !endif
+  !endif
+  
+  ; Installer Attributes
+  
+  !ifdef XPUI_WANSIS
+    XPStyle off
+  !else
+    XPStyle on
+  !endif
+  InstallColors `${XPUI_TEXT_COLOR}` `${XPUI_TEXT_BGCOLOR}`
+  
+  !insertmacro XPUI_DEFAULT XPUI_AUTOCLOSE false
+  AutoCloseWindow ${XPUI_AUTOCLOSE}
+  !insertmacro XPUI_DEFAULT XPUI_SHOWDETAILS show
+  ShowInstDetails ${XPUI_SHOWDETAILS}
+  
+  ; Modern UI Compatibility
+  !insertmacro XPUI_LANGUAGE_CONVERT
+  
+   !ifdef MUI_ABORTWARNING
+  !ifndef XPUI_ABORTWARNING
+  !define XPUI_ABORTWARNING
+  !endif
+  !endif
+   !ifdef MUI_UNABORTWARNING
+  !ifndef XPUI_UNABORTWARNING
+  !define XPUI_UNABORTWARNING
+  !endif
+  !endif
+  
+  !ifndef XPUI_FASTERSKINNING
+    !ifdef XPUI_INTERNAL_PAGEUSED_STARTMENU
+      !insertmacro XPUI_STARTMENUPAGE_INITARRAY
+    !endif
+  !endif
+  
+  Function .onGUIInit
+    !insertmacro XPUI_GUIINIT "" ""
+  FunctionEnd
+  
+  !ifdef XPUI_UNINSTALLER
+    Function un.onGUIInit
+      !insertmacro XPUI_GUIINIT "UN" "un."
+    FunctionEnd
+  !endif
+
+  !ifndef XPUI_FASTERSKINNING
+    !ifdef XPUI_INTERNAL_PAGEUSED_STARTMENU
+      !insertmacro XPUI_STARTMENUPAGE_INITARRAY
+    !endif
+  !endif
+  
+  Function .onGUIEnd
+    LockWindow off
+    !ifdef XPUI_WANSIS
+      SetPluginUnload manual
+      wansis::unskinit
+    !endif
+    
+    !ifmacrodef XPUI_BGFILES_DELETE
+
+        !ifdef XPUI_ENABLEBG
+
+          !insertmacro XPUI_BGFILES_DELETE
+
+        !endif
+
+      !endif
+      
+  FunctionEnd
+  
+  !ifdef XPUI_UNINSTALLER
+    Function un.onGUIEnd
+      LockWindow off
+      !ifdef XPUI_WANSIS
+        SetPluginUnload manual
+        wansis::unskinit
+      !endif
+      
+     !ifmacrodef XPUI_BGFILES_DELETE
+
+        !ifdef XPUI_ENABLEBG
+
+          !insertmacro XPUI_BGFILES_DELETE
+
+        !endif
+
+      !endif
+  
+    FunctionEnd
+  !endif
+  
+  !ifdef XPUI_ABORTWARNING
+
+    Function .onUserAbort
+    
+      StrCmp $XPUI_NOABORTWARNING 1 xpui.exit
+
+        MessageBox MB_YESNO|MB_ICONQUESTION "$(XPUI_ABORTWARNING_TEXT)" IDNO NoExit
+        !insertmacro XPUI_USERABORT
+        NoExit:
+        Abort
+
+      xpui.exit:
+    
+    FunctionEnd
+  
+  !endif
+  
+  !ifdef XPUI_ABORTWARNING & XPUI_UNINSTALLER
+  
+    Function un.onUserAbort
+
+      StrCmp $XPUI_NOABORTWARNING 1 xpui.exit
+
+        MessageBox MB_YESNO|MB_ICONQUESTION "$(XPUI_ABORTWARNING_TEXT)" IDNO NoExit
+        !insertmacro XPUI_USERABORT
+        NoExit:
+        Abort
+
+      xpui.exit:
+
+    FunctionEnd
+
+  !endif
+  
+  !ifdef XPUI_EXTERNAL_SKINNER | XPUI_FASTERSKINNING
+  !else
+  
+    Function xpui.skinControl
+      Exch "$XPUI_TEMP2"
+      SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_COLOR}" "${XPUI_TEXT_BGCOLOR}"
+      Exch "$XPUI_TEMP2"
+    FunctionEnd
+    
+    Function xpui.skinControl.trans
+      Exch "$XPUI_TEMP2"
+      SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_COLOR}" "Transparent"
+      Exch "$XPUI_TEMP2"
+    FunctionEnd
+    
+    Function xpui.skinControl.light
+      Exch "$XPUI_TEMP2"
+      SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_LIGHTCOLOR}" "${XPUI_TEXT_BGCOLOR}"
+      Exch "$XPUI_TEMP2"
+    FunctionEnd
+    
+    Function xpui.skinControl.light.trans
+      Exch "$XPUI_TEMP2"
+      SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_LIGHTCOLOR}" "Transparent"
+      Exch "$XPUI_TEMP2"
+    FunctionEnd
+    
+    !ifdef XPUI_UNINSTALLER
+  
+      Function un.xpui.skinControl
+        Exch "$XPUI_TEMP2"
+        SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_COLOR}" "${XPUI_TEXT_BGCOLOR}"
+        Exch "$XPUI_TEMP2"
+      FunctionEnd
+      
+      Function un.xpui.skinControl.trans
+        Exch "$XPUI_TEMP2"
+        SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_COLOR}" "Transparent"
+        Exch "$XPUI_TEMP2"
+      FunctionEnd
+      
+      Function un.xpui.skinControl.light
+        Exch "$XPUI_TEMP2"
+        SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_LIGHTCOLOR}" "${XPUI_TEXT_BGCOLOR}"
+        Exch "$XPUI_TEMP2"
+      FunctionEnd
+      
+      Function un.xpui.skinControl.light.trans
+        Exch "$XPUI_TEMP2"
+        SetCtlColors $XPUI_TEMP2 "${XPUI_TEXT_LIGHTCOLOR}" "Transparent"
+        Exch "$XPUI_TEMP2"
+      FunctionEnd
+    
+    !endif
+  
+  !endif
+  
+!macroend
+
+!macro XPUI_GUIINIT UN UNFUNC
+
+  !insertmacro XPUI_PAGEMODE_PUSH
+  !define XPUI_UNCHECK_${UN}
+  !ifdef XPUI_UNCHECK_UN
+    !insertmacro XPUI_PAGEMODE_UNINST
+  !else
+    !insertmacro XPUI_PAGEMODE_INST
+  !endif
+  !undef XPUI_UNCHECK_${UN}
+
+  !ifndef XPUI_BGIMAGE
+    InitPluginsDir
+    SetOutPath $PLUGINSDIR
+    File /oname=header.bmp "${XPUI_HEADERIMAGE}"
+    !ifdef XPUI_BOTTOMIMAGE
+    File /oname=btmimg.bmp "${XPUI_BOTTOMIMAGE_BMP}"
+    !endif
+    File /oname=leftimg.bmp "${XPUI_LEFTLOGO}"
+  !else
+    InitPluginsDir
+    SetOutPath $PLUGINSDIR
+    File /oname=BgImage.bmp "${XPUI_BGIMAGE_BMP}"
+  !endif
+  
+  !ifndef XPUI_EXTERNAL_SKINNER  
+    
+    ; Skin the window background
+    !ifndef XPUI_BGIMAGE
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1099
+    !insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+    !endif
+    
+    !ifdef XPUI_BOTTOMIMAGE
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1045
+      ShowWindow $XPUI_TEMP1 0
+    !else
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1039
+      ShowWindow $XPUI_TEMP1 0
+    !endif
+    
+    ; Left Message Box rect - hidden for now
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1304
+    ShowWindow $XPUI_TEMP1 0
+    
+    ; Header text
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1037
+    SetCtlColors $XPUI_TEMP1 `${XPUI_HEADER_TEXT_COLOR}` `Transparent`
+    CreateFont $XPUI_TEMP2 "$(^Font)" 8 700
+    SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+    
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1038
+    SetCtlColors $XPUI_TEMP1 `${XPUI_HEADER_TEXT_COLOR}` `Transparent`
+    CreateFont $XPUI_TEMP2 "$(^Font)" 8 350
+    SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+    
+  !else
+  
+    !ifdef XPUI_BOTTOMIMAGE
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1045
+      ShowWindow $XPUI_TEMP1 0
+    !else
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1039
+      ShowWindow $XPUI_TEMP1 0
+    !endif
+    
+    ; Left Message Box rect - hidden for now
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1304
+    ShowWindow $XPUI_TEMP1 0
+    
+    ; Header text
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1037
+    CreateFont $XPUI_TEMP2 "$(^Font)" 8 700
+    SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+    
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1038
+    CreateFont $XPUI_TEMP2 "$(^Font)" 8 350
+    SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+  
+  !endif
+    
+  ; Header Image
+  !ifdef TEMP
+    !define TEMP_PUSH `${TEMP}`
+    !undef TEMP
+  !endif
+  !ifdef XPUI_HEADERIMAGE_NORESIZETOFIT
+    !define TEMP " "
+  !else
+    !define TEMP /RESIZETOFIT
+  !endif
+  !ifndef XPUI_BGIMAGE
+  SetBrandingImage /IMGID=1046 ${TEMP} "$PLUGINSDIR\Header.bmp"
+  !endif
+  !undef TEMP
+  !ifdef TEMP_PUSH
+    !define TEMP `${TEMP_PUSH}`
+    !undef TEMP_PUSH
+  !endif
+  
+  ; Left Logo
+  !ifdef TEMP
+    !define TEMP_PUSH `${TEMP}`
+    !undef TEMP
+  !endif
+  !ifdef XPUI_LEFTLOGO_NORESIZETOFIT
+    !define TEMP " "
+  !else
+    !define TEMP /RESIZETOFIT
+  !endif
+  !ifndef XPUI_BGIMAGE
+    SetBrandingImage /IMGID=1302 ${TEMP} "$PLUGINSDIR\Leftimg.bmp"
+  !endif
+  !undef TEMP
+  !ifdef TEMP_PUSH
+    !define TEMP `${TEMP_PUSH}`
+    !undef TEMP_PUSH
+  !endif
+  
+  ; Bottom Image
+  !ifdef XPUI_BOTTOMIMAGE
+    !ifdef TEMP
+      !define TEMP_PUSH `${TEMP}`
+      !undef TEMP
+    !endif
+    !ifdef XPUI_BOTTOMIMAGE_NORESIZETOFIT
+      !define TEMP " "
+    !else
+      !define TEMP /RESIZETOFIT
+    !endif
+    SetBrandingImage /IMGID=1039 ${TEMP} "$PLUGINSDIR\Btmimg.bmp"
+    !undef TEMP
+    !ifdef TEMP_PUSH
+      !define TEMP `${TEMP_PUSH}`
+      !undef TEMP_PUSH
+    !endif
+  !endif
+  
+  !ifdef XPUI_BGIMAGE
+    !ifdef TEMP
+    !define TEMP_PUSH `${TEMP}`
+    !undef TEMP
+  !endif
+  !ifdef XPUI_BGIMAGE_NORESIZETOFIT
+    !define TEMP " "
+  !else
+    !define TEMP /RESIZETOFIT
+  !endif
+
+    SetBrandingImage /IMGID=1099 ${TEMP} "$PLUGINSDIR\BgImage.bmp"
+    !undef TEMP
+  !ifdef TEMP_PUSH
+    !define TEMP `${TEMP_PUSH}`
+    !undef TEMP_PUSH
+  !endif
+  !endif
+    
+    !ifndef XPUI_EXTERNAL_SKINNER
+    
+      ; Branding Text
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1028
+      CreateFont $XPUI_TEMP2 "Trebuchet MS" 10 700
+      SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+      SendMessage $XPUI_TEMP1 0xC 0 "STR:${XPUI_BRANDINGTEXT}"
+      SetCtlColors $XPUI_TEMP1 "${XPUI_BRANDINGTEXT_COLOR_FG}" "Transparent"
+      
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1256
+      CreateFont $XPUI_TEMP2 "Trebuchet MS" 10 700
+      SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+      SendMessage $XPUI_TEMP1 0xC 0 "STR:${XPUI_BRANDINGTEXT}"
+      SetCtlColors $XPUI_TEMP1 "${XPUI_BRANDINGTEXT_COLOR_BG}" "Transparent"
+      
+      ; Left Info - Time Counter
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1100
+      CreateFont $XPUI_TEMP2 "Arial" 8 700
+      SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+      !insertmacro XPUI_CONTROL_SKIN_TRANS $XPUI_TEMP1
+      ShowWindow $XPUI_TEMP1 0
+      
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1101
+      CreateFont $XPUI_TEMP2 "Arial" 8 350
+      SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+      !insertmacro XPUI_CONTROL_SKIN_LIGHT_TRANS $XPUI_TEMP1
+      ShowWindow $XPUI_TEMP1 0
+      
+      ; Skin the child window - to make flashes when changing pages less noticeable
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1018
+      !insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+    
+    !else
+    
+      ; Branding Text
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1028
+      ShowWindow $XPUI_TEMP1 0
+      
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1256
+      ShowWindow $XPUI_TEMP1 0
+      
+      ; Left Info - Time Counter
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1100
+      CreateFont $XPUI_TEMP2 "Arial" 8 700
+      SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+      ShowWindow $XPUI_TEMP1 0
+      
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1101
+      CreateFont $XPUI_TEMP2 "Arial" 8 350
+      SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+      ShowWindow $XPUI_TEMP1 0
+      
+    !endif
+    
+  !ifdef XPUI_WANSIS
+  
+    SetOutPath $PLUGINSDIR
+    File /oname=gen.bmp   `${XPUI_WANSIS_GEN}`
+    File /oname=genex.bmp `${XPUI_WANSIS_GENEX}`
+
+     !ifdef XPUI_WANSIS_HEADERIMAGE
+
+      File /oname=header.bmp `${XPUI_WANSIS_HEADERIMAGE_BMP}`
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1047
+      ShowWindow $XPUI_TEMP1 0
+      SetBrandingImage /IMGID=1046 $PLUGINSDIR\Header.bmp
+
+    !else
+
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1046
+      ShowWindow $XPUI_TEMP1 0
+
+    !endif
+    
+    ; Check for msvcr71.dll (alerts user of incompatibility problems on older machines or [in my case] fresh Windows installations)
+    IfFileExists $SYSDIR\msvcr71.dll FoundCRT
+      MessageBox MB_OK|MB_ICONEXCLAMATION "Setup failed to load the Windows runtime library msvcr71.dll.  Setup will function, but the visual style will not work.  This is most likely caused by a fresh Windows installation." IDOK NoSkin
+    FoundCRT:
+
+    wansis::skinit /NOUNLOAD `$PLUGINSDIR\gen.bmp` `$PLUGINSDIR\genex.bmp`
+    
+    Pop $XPUI_TEMP1
+      StrCmp $XPUI_TEMP1 "success" +2
+      MessageBox MB_OK|MB_ICONINFORMATION "Setup encountered an error initializing WAnsis skinning engine. $(^Name) Setup will function, but it will not look very nice.$\n$\nReturn from wansis.dll: $XPUI_TEMP1"
+
+    NoSkin:
+  
+  !endif
+  
+  ; NSIS is always raving about unused variables, so lets shut it up :)
+  
+  Goto +5 ; Ahh, the stupidity of computers...
+  Push $XPUI_NOABORTWARNING
+  Pop  $XPUI_NOABORTWARNING
+  Push $XPUI_ABORTED
+  Pop  $XPUI_ABORTED
+  
+  ; What the heck? Lets do it for functions too :D
+  
+  !ifdef XPUI_EXTERNAL_SKINNER | XPUI_FASTERSKINNING
+  !else
+  Goto +5 ; This effectively compiles code that will never be executed - costs ~40-50 bytes?
+  Call ${UNFUNC}xpui.SkinControl
+  Call ${UNFUNC}xpui.SkinControl.light
+  Call ${UNFUNC}xpui.SkinControl.trans
+  Call ${UNFUNC}xpui.SkinControl.light.trans
+  !endif
+  
+  !ifmacrodef XPUI_SET_BG
+
+    !ifdef XPUI_ENABLEBG
+
+      !insertmacro XPUI_SET_BG
+
+    !endif
+
+  !endif
+  
+  ; If the faster skinner is disabled, this function will be inserted after pages.
+  ; Therefore, we can take care of some page functions before the installer starts.
+  ; This makes page initialization MUCH faster.
+  
+  !ifndef XPUI_FASTERSKINNING
+
+    SetOutPath $PLUGINSDIR
+    !ifdef XPUI_INTERNAL_PAGEUSED_WELCOME
+      File `${XPUI_SYSDIR}\INI\isWelcome.ini`
+    !endif
+    !ifdef XPUI_INTERNAL_PAGEUSED_WELCOME2
+      File `${XPUI_SYSDIR}\INI\Welcome.ini`
+    !endif
+    !ifdef XPUI_INTERNAL_PAGEUSED_INSTCONFIRM
+      File `${XPUI_SYSDIR}\INI\Confirm.ini`
+    !endif
+    !ifdef XPUI_INTERNAL_PAGEUSED_INSTSUCCESS
+      File `${XPUI_SYSDIR}\INI\Confirm.ini`
+    !endif
+    !ifdef XPUI_INTERNAL_PAGEUSED_FINISH
+      File `${XPUI_SYSDIR}\INI\Finish.ini`
+    !endif
+    !ifdef XPUI_INTERNAL_PAGEUSED_STARTMENU
+      !insertmacro XPUI_STARTMENUPAGE_CREATEINI
+    !endif
+    
+  !endif
+  
+  !ifdef XPUI_${UN}CUSTOMFUNCTION_GUIINIT
+    Call `${XPUI_${UN}CUSTOMFUNCTION_GUIINIT}`
+    !undef XPUI_${UN}CUSTOMFUNCTION_GUIINIT
+  !endif
+  
+  ShowWindow $HWNDPARENT 2
+  
+  !insertmacro XPUI_PAGEMODE_POP
+!macroend
+
+; Modern UI Compatibility Script
+
+!include "${XPUI_SYSDIR}\MUIConvert.nsh"
+!insertmacro XPUI_LANGUAGE_CONVERT
+
+; Pages
+
+!macro XPUI_PAGECHECKS
+  ; any checks for settings, etc that will be checked before XPUI pages are inserted go here
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+  
+  !ifdef XPUI_INTERNAL_LANG_INSERTED
+    !verbose 4
+    !error "ExperienceUI: FATAL: Language files must be inserted after pages.  Please move all lines containing $\"!insertmacro XPUI_LANGUAGE$\" down below page macros."
+  !endif
+  
+  !verbose 0
+    !insertmacro XPUI_LANGUAGE_CONVERT
+  !verbose ${XPUI_VERBOSE}
+  
+  !ifdef XPUI_WANSIS
+  !ifndef XPUI_EXTERNAL_SKINNER
+  !define XPUI_EXTERNAL_SKINNER
+  !endif
+  !endif
+  
+  !ifdef XPUI_BGIMAGE
+    !ifndef XPUI_COMPONENTSPAGE_NODESC
+      !define XPUI_COMPONENTSPAGE_NODESC
+    !endif
+  !endif
+  
+!macroend
+
+!macro XPUI_ENDPAGECHECKS
+  ; any preproccessor commands after page macros go here
+  !verbose pop
+!macroend
+
+!macro XPUI_PAGE_WELCOME
+
+  !insertmacro XPUI_PAGECHECKS
+  
+  !ifndef XPUI_INTERNAL_PAGEUSED_WELCOME
+    !define XPUI_INTERNAL_PAGEUSED_WELCOME
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE_TITLE "$(XPUI_${XPUI_UN}WELCOMEPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE_SUBTITLE "$(XPUI_${XPUI_UN}WELCOMEPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE_TEXT_TOP "$(XPUI_${XPUI_UN}WELCOMEPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE_TEXT "$(XPUI_${XPUI_UN}WELCOMEPAGE_TEXT)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE_CAPTION "$(XPUI_${XPUI_UN}WELCOMEPAGE_CAPTION)"
+  
+  !insertmacro XPUI_CREATEID
+  
+  PageEx ${XPUI_UNFUNC}custom
+  PageCallbacks ${XPUI_UNFUNC}XPUI.io.WelcomePage.${XPUI_UNIQUEID} ${XPUI_UNFUNC}XPUI.io.WelcomePage.${XPUI_UNIQUEID}.leave
+  Caption `${XPUI_${XPUI_UN}WELCOMEPAGE_CAPTION}`
+  PageExEnd
+
+  Function ${XPUI_UNFUNC}XPUI.io.WelcomePage.${XPUI_UNIQUEID}
+    LockWindow on
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+    
+    !ifdef XPUI_FASTERSKINNING
+    SetOutPath $PLUGINSDIR
+    File `${XPUI_SYSDIR}\INI\isWelcome.ini`
+    !endif
+
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE    
+
+    WriteINIStr $PLUGINSDIR\isWelcome.ini `Field 1` Text `${XPUI_${XPUI_UN}WELCOMEPAGE_TEXT_TOP}`
+    WriteINIStr $PLUGINSDIR\isWelcome.ini `Field 2` Text `${XPUI_${XPUI_UN}WELCOMEPAGE_TEXT}`
+    WriteINIStr `$PLUGINSDIR\isWelcome.ini` `Settings` `RTL` `$(^RTL)`
+    
+    InstallOptions::initDialog /NOUNLOAD `$PLUGINSDIR\isWelcome.ini`
+      
+      Pop $XPUI_HWND
+      !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1200
+        CreateFont $XPUI_TEMP2 `$(^Font)` 12 700 ; previously Tahoma
+        SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 $XPUI_TEMP2
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1201
+        CreateFont $XPUI_TEMP2 `$(^Font)` 8 350 ; previously Tahoma
+        SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 $XPUI_TEMP2
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+      
+      !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}WELCOMEPAGE_TITLE}` `${XPUI_${XPUI_UN}WELCOMEPAGE_SUBTITLE}`
+      
+      !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+      
+      LockWindow off
+      
+    InstallOptions::show
+    FunctionEnd
+    
+    Function ${XPUI_UNFUNC}XPUI.io.WelcomePage.${XPUI_UNIQUEID}.leave
+    !ifndef XPUI_NOLOCK
+    LockWindow on
+    !endif
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  FunctionEnd
+  
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE_TITLE
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE_TEXT
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE_CAPTION
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+
+!macroend
+
+!macro XPUI_PAGE_WELCOME2
+
+  !insertmacro XPUI_PAGECHECKS
+  
+  !ifndef XPUI_INTERNAL_PAGEUSED_WELCOME2
+    !define XPUI_INTERNAL_PAGEUSED_WELCOME2
+  !endif
+  
+  !ifdef XPUI_WELCOMEPAGESTYLE2_TITLE | XPUI_WELCOMEPAGESTYLE2_SUBTITLE | XPUI_WELCOMEPAGESTYLE2_CAPTION | XPUI_WELCOMEPAGESTYLE2_TEXT_TOP | XPUI_WELCOMEPAGESTYLE2_TEXT
+    !warning "The XPUI_WELCOMEPAGESTYLE2 defines are deprecated and have been renamed to XPUI_WELCOMEPAGE2_*.  Please update your script."
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE2_TITLE "$(XPUI_${XPUI_UN}WELCOMEPAGE2_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE2_SUBTITLE "$(XPUI_${XPUI_UN}WELCOMEPAGE2_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT_TOP "$(XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT "$(XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}WELCOMEPAGE2_CAPTION "$(XPUI_${XPUI_UN}WELCOMEPAGE2_CAPTION)"
+  
+  !insertmacro XPUI_CREATEID
+  
+  PageEx ${XPUI_UNFUNC}custom
+  PageCallbacks ${XPUI_UNFUNC}XPUI.io.WelcomePage2.${XPUI_UNIQUEID} ${XPUI_UNFUNC}XPUI.io.WelcomePage2.${XPUI_UNIQUEID}.leave
+  Caption `${XPUI_${XPUI_UN}WELCOMEPAGE2_CAPTION}`
+  PageExEnd
+
+  Function ${XPUI_UNFUNC}XPUI.io.WelcomePage2.${XPUI_UNIQUEID}
+    LockWindow on
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+    
+    !ifdef XPUI_FASTERSKINNING
+    SetOutPath $PLUGINSDIR
+    File `${XPUI_SYSDIR}\INI\Welcome.ini`
+    !endif
+
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE    
+
+    WriteINIStr $PLUGINSDIR\Welcome.ini `Field 1` Text `${XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT_TOP}`
+    WriteINIStr $PLUGINSDIR\Welcome.ini `Field 2` Text `${XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT}`
+    WriteINIStr `$PLUGINSDIR\Welcome.ini` `Settings` `RTL` `$(^RTL)`
+    
+    InstallOptions::initDialog /NOUNLOAD `$PLUGINSDIR\Welcome.ini`
+      
+      Pop $XPUI_HWND
+      !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1200
+        CreateFont $XPUI_TEMP2 `$(^Font)` 8 700 ; previously Tahoma
+        SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 $XPUI_TEMP2
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1201
+        CreateFont $XPUI_TEMP2 `$(^Font)` 8 350 ; previously Tahoma
+        SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 $XPUI_TEMP2
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+      
+      !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}WELCOMEPAGE2_TITLE}` `${XPUI_${XPUI_UN}WELCOMEPAGE2_SUBTITLE}`
+      
+      !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+      
+      LockWindow off
+      
+    InstallOptions::show
+    FunctionEnd
+    
+    Function ${XPUI_UNFUNC}XPUI.io.WelcomePage2.${XPUI_UNIQUEID}.leave
+    !ifndef XPUI_NOLOCK
+    LockWindow on
+    !endif
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  FunctionEnd
+  
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE2_TITLE
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE2_SUBTITLE
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT_TOP
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE2_TEXT
+  !undef XPUI_${XPUI_UN}WELCOMEPAGE2_CAPTION
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+
+!macroend
+
+!macro XPUI_PAGE_LICENSE DATA
+
+  !insertmacro XPUI_PAGECHECKS
+  
+  !ifndef XPUI_INTERNAL_PAGEUSED_LICENSE
+    !define XPUI_INTERNAL_PAGEUSED_LICENSE
+  !endif
+  
+  !insertmacro XPUI_DEFAULT MUI_LICENSEPAGE_HEADER_TITLE    "$(XPUI_${XPUI_UN}LICENSEPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT MUI_LICENSEPAGE_HEADER_SUBTITLE "$(XPUI_${XPUI_UN}LICENSEPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT MUI_LICENSEPAGE_TEXT_TOP        "$(XPUI_${XPUI_UN}LICENSEPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT MUI_LICENSEPAGE_TEXT_BOTTOM     "$(XPUI_${XPUI_UN}LICENSEPAGE_TEXT_BOTTOM)"
+  !insertmacro XPUI_DEFAULT MUI_LICENSEPAGE_CAPTION         "$(XPUI_${XPUI_UN}LICENSEPAGE_CAPTION)"
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_CAPTION     "${MUI_LICENSEPAGE_HEADER_CAPTION}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_TITLE       "${MUI_LICENSEPAGE_HEADER_TITLE}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_SUBTITLE    "${MUI_LICENSEPAGE_HEADER_SUBTITLE}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_TEXT_TOP    "${MUI_LICENSEPAGE_TEXT_TOP}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_TEXT_BOTTOM "${MUI_LICENSEPAGE_TEXT_BOTTOM}"
+  
+  ; Fix for John P. on the forums
+  !ifdef XPUI_LICENSEPAGE_CHECKBOX
+    !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_CHECKBOX_TEXT             "$(^AcceptBtn)"
+  !else ifdef XPUI_LICENSEPAGE_RADIOBUTTONS
+    !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT  "$(^AcceptBtn)"
+    !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE "$(^DontAcceptBtn)"
+  !endif
+  
+  !insertmacro XPUI_CREATEID
+  PageEx ${XPUI_UNFUNC}license
+    
+    Caption `$(XPUI_${XPUI_UN}LICENSEPAGE_CAPTION)`
+    PageCallbacks ${XPUI_UNFUNC}XPUI.lic.${XPUI_UNIQUEID}.pre ${XPUI_UNFUNC}XPUI.lic.${XPUI_UNIQUEID}.show ${XPUI_UNFUNC}XPUI.lic.${XPUI_UNIQUEID}.leave
+    LicenseData `${DATA}`
+    
+    !ifdef XPUI_LICENSEPAGE_RADIOBUTTONS
+    LicenseForceSelection radiobuttons `${XPUI_${XPUI_UN}LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT}` `${XPUI_${XPUI_UN}LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE}`
+    !endif
+    
+    !ifdef XPUI_LICENSEPAGE_CHECKBOX
+    LicenseForceSelection checkbox `${XPUI_${XPUI_UN}LICENSEPAGE_CHECKBOX_TEXT}`
+    !endif
+  
+  PageExEnd
+  
+  !insertmacro XPUI_DEFAULT XPUI_LICENSEBKCOLOR 0xFFFFFF
+  LicenseBkColor `${XPUI_LICENSEBKCOLOR}`
+  
+  Function ${XPUI_UNFUNC}XPUI.lic.${XPUI_UNIQUEID}.pre
+    
+    StrCmp $XPUI_ABORTED 1 0 +2
+    Abort
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE
+    
+  FunctionEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.lic.${XPUI_UNIQUEID}.show
+    
+    LockWindow On
+  
+    !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}LICENSEPAGE_TITLE}` `${XPUI_${XPUI_UN}LICENSEPAGE_SUBTITLE}`
+    
+    FindWindow $XPUI_HWND `#32770` `` $HWNDPARENT
+    !insertmacro XPUI_CONTROL_SKIN $XPUI_HWND
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1034
+    !insertmacro XPUI_CONTROL_SKIN_LIGHT $XPUI_TEMP1
+      !ifdef XPUI_LICENSEPAGE_RESET
+        SendMessage $XPUI_TEMP1 0x00F1 0 0
+      !endif
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1035
+    !insertmacro XPUI_CONTROL_SKIN_LIGHT $XPUI_TEMP1
+      !ifdef XPUI_LICENSEPAGE_RESET
+        SendMessage $XPUI_TEMP1 0x00F1 0 0
+        
+        GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1
+        EnableWindow $XPUI_TEMP1 0
+      !endif
+      
+    FindWindow $XPUI_HWND `#32770` `` $HWNDPARENT
+      
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1040
+    !insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+    SendMessage $XPUI_TEMP1 0xC 0 `STR:${XPUI_${XPUI_UN}LICENSEPAGE_TEXT_TOP}`
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1006
+    !insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1034
+    !insertmacro XPUI_CONTROL_SKIN_LIGHT $XPUI_TEMP1
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1035
+    !insertmacro XPUI_CONTROL_SKIN_LIGHT $XPUI_TEMP1
+    
+    !insertmacro XPUI_CONTROL_SKIN $XPUI_HWND
+    
+    !ifndef XPUI_${XPUI_UN}LICENSEPAGE_RADIOBUTTONS
+      !ifndef XPUI_${XPUI_UN}LICENSEPAGE_CHECKBOX
+        !insertmacro XPUI_INNERDIALOG_TEXT `${XPUI_${XPUI_UN}LICENSEPAGE_TEXT_BOTTOM}` 1006
+      !endif
+    !endif
+    
+    !ifdef XPUI_${XPUI_UN}LICENSEPAGE_CHECKBOX
+    !insertmacro XPUI_INNERDIALOG_TEXT `${XPUI_${XPUI_UN}LICENSEPAGE_TEXT_BOTTOM}` 1006
+    !endif
+    
+    !ifdef XPUI_${XPUI_UN}LICENSEPAGE_RADIOBUTTONS
+    !insertmacro XPUI_INNERDIALOG_TEXT `${XPUI_${XPUI_UN}LICENSEPAGE_TEXT_BOTTOM}` 1006
+    !endif
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+    
+    LockWindow off
+  FunctionEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.lic.${XPUI_UNIQUEID}.leave
+  !ifndef XPUI_NOLOCK
+  LockWindow on
+  !endif
+  
+  !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  
+  FunctionEnd
+  
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_PRE
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_SHOW
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_LEAVE
+  
+  !undef XPUI_${XPUI_UN}LICENSEPAGE_CAPTION
+  !undef XPUI_${XPUI_UN}LICENSEPAGE_TITLE
+  !undef XPUI_${XPUI_UN}LICENSEPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}LICENSEPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}LICENSEPAGE_TEXT_BOTTOM
+  
+  !insertmacro XPUI_UNSET XPUI_LICENSEPAGE_CHECKBOX
+  !insertmacro XPUI_UNSET XPUI_LICENSEPAGE_RADIOBUTTONS
+  
+  !undef MUI_LICENSEPAGE_HEADER_TITLE
+  !undef MUI_LICENSEPAGE_HEADER_SUBTITLE
+  !undef MUI_LICENSEPAGE_TEXT_TOP
+  !undef MUI_LICENSEPAGE_TEXT_BOTTOM
+  !undef MUI_LICENSEPAGE_CAPTION
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+
+!macroend
+
+!macro XPUI_PAGE_COMPONENTS
+
+  !insertmacro XPUI_PAGECHECKS
+  
+  !ifndef XPUI_INTERNAL_PAGEUSED_COMPONENTS
+    !define XPUI_INTERNAL_PAGEUSED_COMPONENTS
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_TITLE "$(XPUI_${XPUI_UN}COMPONENTSPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_SUBTITLE "$(XPUI_${XPUI_UN}COMPONENTSPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_CAPTION "$(XPUI_${XPUI_UN}COMPONENTSPAGE_CAPTION)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_INFO "$(XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_INFO)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE "$(XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE)"
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_TOP      "$(^ComponentsText)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_INSTTYPE "$(^ComponentsSubText1)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_SECLIST  "$(^ComponentsSubText2)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_SECLIST_NOINSTTYPE  "$(^ComponentsSubText2_NoInstTypes)"
+  
+  !insertmacro XPUI_CREATEID
+  PageEx ${XPUI_UNFUNC}components
+    Caption `$(XPUI_${XPUI_UN}COMPONENTSPAGE_CAPTION)`
+    PageCallbacks ${XPUI_UNFUNC}XPUI.cmp.${XPUI_UNIQUEID}.pre ${XPUI_UNFUNC}XPUI.cmp.${XPUI_UNIQUEID}.show ${XPUI_UNFUNC}XPUI.cmp.${XPUI_UNIQUEID}.leave
+    ComponentText "${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_TOP}" "${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_INSTTYPE}" "${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_SECLIST}"
+  PageExEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.cmp.${XPUI_UNIQUEID}.pre
+    
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE
+  
+  FunctionEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.cmp.${XPUI_UNIQUEID}.show
+  
+    !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}COMPONENTSPAGE_TITLE}` `${XPUI_${XPUI_UN}COMPONENTSPAGE_SUBTITLE}`
+    
+    !insertmacro XPUI_PAGECOLOR_INIT 1022
+    !insertmacro XPUI_PAGECOLOR_INIT 1021
+    !insertmacro XPUI_PAGECOLOR_INIT 1023
+    !insertmacro XPUI_PAGECOLOR_INIT 1006
+    !insertmacro XPUI_PAGECOLOR_INIT 1042
+    !insertmacro XPUI_PAGECOLOR_INIT 1043
+    
+    FindWindow $XPUI_HWND "#32770" "" "$HWNDPARENT"
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1032
+    SetCtlColors $XPUI_TEMP1 0x000000 0xFFFFFF
+    
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1043
+      SendMessage $XPUI_TEMP1 0xC 0 `STR:${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_INFO}`
+      StrCpy $XPUI_HWND "${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_INFO}"
+      EnableWindow $XPUI_TEMP1 0
+    
+    InstTypeGetText 0 $XPUI_TEMP1
+    StrCmp $XPUI_TEMP1 "" "" XPUI.using_insttypes
+      !insertmacro XPUI_INNERDIALOG_TEXT "${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_SECLIST_NOINSTTYPE}" 1022
+      !insertmacro XPUI_INNERDIALOG_TEXT " " 1021
+    XPUI.using_insttypes:
+    
+    !ifdef XPUI_COMPONENTSPAGE_NODESC
+      FindWindow $XPUI_TEMP1 `#32770` `` `$HWNDPARENT`
+      GetDlgItem $XPUI_TEMP2 $XPUI_TEMP1 1042
+      ShowWindow $XPUI_TEMP2 0
+      GetDlgItem $XPUI_TEMP2 $XPUI_TEMP1 1043
+      ShowWindow $XPUI_TEMP2 0
+    !endif
+    
+    !insertmacro XPUI_INNERDIALOG_TEXT `${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE}` 1042
+    StrCpy $XPUI_TEMP2 "${XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE}"
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+    
+    !ifndef XPUI_NOLOCK
+    LockWindow off
+    !endif
+  FunctionEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.cmp.${XPUI_UNIQUEID}.leave
+  
+    !ifndef XPUI_NOLOCK
+      LockWindow on
+    !endif
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  
+  FunctionEnd
+  
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_PRE
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_SHOW
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_LEAVE
+  
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_TITLE
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_CAPTION
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_DESCRIPTION_INFO
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_INSTTYPE
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_SECLIST
+  !undef XPUI_${XPUI_UN}COMPONENTSPAGE_TEXT_SECLIST_NOINSTTYPE
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+
+!macroend
+
+!macro XPUI_PAGE_DIRECTORY
+
+  !insertmacro XPUI_PAGECHECKS
+  
+  !ifndef XPUI_INTERNAL_PAGEUSED_DIRECTORY
+    !define XPUI_INTERNAL_PAGEUSED_DIRECTORY
+  !endif
+  
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_HEADER_TITLE     "$(XPUI_${XPUI_UN}DIRECTORYPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_HEADER_SUBTITLE  "$(XPUI_${XPUI_UN}DIRECTORYPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_TEXT_TOP         "$(XPUI_${XPUI_UN}DIRECTORYPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_CAPTION          "$(XPUI_${XPUI_UN}DIRECTORYPAGE_CAPTION)"
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_TEXT_DESTINATION "$(^DirSubText)"
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_BROWSEDIALOG     "$(^DirBrowseText)"
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_BROWSEBUTTON     "$(^BrowseBtn)"
+    
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}DIRECTORYPAGE_TITLE         "${MUI_DIRECTORYPAGE_HEADER_TITLE}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}DIRECTORYPAGE_SUBTITLE      "${MUI_DIRECTORYPAGE_HEADER_SUBTITLE}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}DIRECTORYPAGE_CAPTION       "${MUI_DIRECTORYPAGE_CAPTION}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}DIRECTORYPAGE_TEXT_TOP      "${MUI_DIRECTORYPAGE_TEXT_TOP}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}DIRECTORYPAGE_SUBTEXT       "${MUI_DIRECTORYPAGE_TEXT_DESTINATION}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}DIRECTORYPAGE_BROWSEDIALOG  "${MUI_DIRECTORYPAGE_BROWSEDIALOG}"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}DIRECTORYPAGE_BROWSEBUTTON  "${MUI_DIRECTORYPAGE_BROWSEBUTTON}"
+  
+  !insertmacro XPUI_DEFAULT MUI_DIRECTORYPAGE_VARIABLE "$INSTDIR"
+  !insertmacro XPUI_DEFAULT XPUI_DIRVAR "${MUI_DIRECTORYPAGE_VARIABLE}"
+  
+  PageEx ${XPUI_UNFUNC}directory
+    Caption `${XPUI_${XPUI_UN}DIRECTORYPAGE_CAPTION}`
+    DirVar ${XPUI_DIRVAR}
+    PageCallbacks ${XPUI_UNFUNC}XPUI.dir.${XPUI_UNIQUEID}.pre ${XPUI_UNFUNC}XPUI.dir.${XPUI_UNIQUEID}.show ${XPUI_UNFUNC}XPUI.dir.${XPUI_UNIQUEID}.leave
+    DirText "${XPUI_${XPUI_UN}DIRECTORYPAGE_TEXT_TOP}" "${XPUI_${XPUI_UN}DIRECTORYPAGE_SUBTEXT}" "${XPUI_${XPUI_UN}DIRECTORYPAGE_BROWSEBUTTON}" "${XPUI_${XPUI_UN}DIRECTORYPAGE_BROWSEDIALOG}"
+  PageExEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.dir.${XPUI_UNIQUEID}.pre
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE
+    
+  FunctionEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.dir.${XPUI_UNIQUEID}.show
+  
+    !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}DIRECTORYPAGE_TITLE}` `${XPUI_${XPUI_UN}DIRECTORYPAGE_SUBTITLE}`
+    
+    FindWindow $XPUI_TEMP1 `#32770` `` $HWNDPARENT
+    !insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+    
+    !insertmacro XPUI_DEFAULT XPUI_DIRECTORYPAGE_TEXTBOX_COLOR "${XPUI_TEXT_BGCOLOR}"
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP1 1019
+    SetCtlColors $XPUI_TEMP1 0x000000 0xFFFFFF
+    
+    !insertmacro XPUI_PAGECOLOR_INIT 1001
+    !insertmacro XPUI_PAGECOLOR_INIT 1008
+    !insertmacro XPUI_PAGECOLOR_INIT 1006
+    !insertmacro XPUI_PAGECOLOR_INIT 1020
+    !insertmacro XPUI_PAGECOLOR_INIT 1023
+    !insertmacro XPUI_PAGECOLOR_INIT 1024
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+    
+    !ifndef XPUI_NOLOCK
+    LockWindow off
+    !endif
+    FunctionEnd
+    
+  Function ${XPUI_UNFUNC}XPUI.dir.${XPUI_UNIQUEID}.leave
+    
+    !ifndef XPUI_NOLOCK
+    LockWindow on
+    !endif
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  
+  FunctionEnd
+  
+  !undef XPUI_DIRVAR
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_PRE
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_SHOW
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_LEAVE
+  
+  !undef XPUI_${XPUI_UN}DIRECTORYPAGE_TITLE
+  !undef XPUI_${XPUI_UN}DIRECTORYPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}DIRECTORYPAGE_CAPTION
+  !undef XPUI_${XPUI_UN}DIRECTORYPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}DIRECTORYPAGE_SUBTEXT
+  !undef XPUI_${XPUI_UN}DIRECTORYPAGE_BROWSEBUTTON
+  !undef XPUI_${XPUI_UN}DIRECTORYPAGE_BROWSEDIALOG
+  
+  !undef MUI_DIRECTORYPAGE_HEADER_TITLE
+  !undef MUI_DIRECTORYPAGE_HEADER_SUBTITLE
+  !undef MUI_DIRECTORYPAGE_TEXT_TOP
+  !undef MUI_DIRECTORYPAGE_CAPTION
+  !undef MUI_DIRECTORYPAGE_TEXT_DESTINATION
+  !undef MUI_DIRECTORYPAGE_BROWSEDIALOG
+  !undef MUI_DIRECTORYPAGE_BROWSEBUTTON
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+
+!macroend
+
+; Before you read this code, let me tell you a secret:
+; I HAD TO WRITE THIS D*** THING MYSELF because the StartMenu.dll plugin is too shy - it has to hide behind any control
+; below it - in this case, LABEL 1099, the background for the entire window.  The only other option was to discontinue
+; the start menu page...be glad I chose to write a new one...
+
+!macro XPUI_PAGE_STARTMENU_INIT ID VAR
+
+  !insertmacro XPUI_PAGECHECKS
+
+  !ifndef XPUI_INTERNAL_PAGEUSED_STARTMENU
+    !define XPUI_INTERNAL_PAGEUSED_STARTMENU
+  !endif
+  
+  !insertmacro XPUI_CREATEID
+  
+  !insertmacro XPUI_DEFAULT XPUI_INTERNAL_STARTMENUPAGE_ID_DEFAULT ${ID}
+
+  !insertmacro XPUI_DEFAULT MUI_STARTMENUPAGE_DEFAULTFOLDER "$(^Name)"
+  !insertmacro XPUI_DEFAULT XPUI_STARTMENUPAGE_DEFAULTFOLDER "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
+  !insertmacro XPUI_DEFAULT XPUI_STARTMENUPAGE_FOLDER "${XPUI_STARTMENUPAGE_DEFAULTFOLDER}"
+  
+  !define XPUI_STARTMENUPAGE_VARIABLE "${VAR}"
+  !define "XPUI_STARTMENUPAGE_${ID}_VARIABLE" "${XPUI_STARTMENUPAGE_VARIABLE}"
+  !define "XPUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER" "${XPUI_STARTMENUPAGE_FOLDER}"
+  
+  !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME
+
+  !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT
+    !define "XPUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT" "${MUI_STARTMENUPAGE_REGISTRY_ROOT}"
+  !endif
+  !ifdef MUI_STARTMENUPAGE_REGISTRY_KEY
+    !define "XPUI_STARTMENUPAGE_${ID}_REGISTRY_KEY" "${MUI_STARTMENUPAGE_REGISTRY_KEY}"
+  !endif
+  !ifdef MUI_STARTMENUPAGE_REGISTRY_VALUENAME
+    !define "XPUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
+  !endif
+  
+  !else ifdef XPUI_STARTMENUPAGE_REGISTRY_ROOT & XPUI_STARTMENUPAGE_REGISTRY_KEY & XPUI_STARTMENUPAGE_REGISTRY_VALUENAME
+  
+  !ifdef XPUI_STARTMENUPAGE_REGISTRY_ROOT
+    !define "XPUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT" "${XPUI_STARTMENUPAGE_REGISTRY_ROOT}"
+  !endif
+  !ifdef XPUI_STARTMENUPAGE_REGISTRY_KEY
+    !define "XPUI_STARTMENUPAGE_${ID}_REGISTRY_KEY" "${XPUI_STARTMENUPAGE_REGISTRY_KEY}"
+  !endif
+  !ifdef XPUI_STARTMENUPAGE_REGISTRY_VALUENAME
+    !define "XPUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME" "${XPUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
+  !endif
+  
+  !endif
+  
+  !ifdef XPUI_FASTERSKINNING
+    !insertmacro XPUI_STARTMENUPAGE_INITARRAY
+  !endif
+  
+  !define XPUI_STARTMENUPAGE_${ID}_ID "${XPUI_UNIQUEID}"
+  
+  Function ${XPUI_UNFUNC}xpui.StartMenu.show.${XPUI_UNIQUEID}
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE
+
+     !ifdef XPUI_STARTMENUPAGE_REGISTRY_ROOT & XPUI_STARTMENUPAGE_REGISTRY_KEY & XPUI_STARTMENUPAGE_REGISTRY_VALUENAME
+
+      StrCmp "${XPUI_STARTMENUPAGE_VARIABLE}" "" 0 +4
+
+      ReadRegStr $XPUI_TEMP1 "${XPUI_STARTMENUPAGE_REGISTRY_ROOT}" "${XPUI_STARTMENUPAGE_REGISTRY_KEY}" "${XPUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
+        StrCmp $XPUI_TEMP1 "" +2
+          StrCpy "${XPUI_STARTMENUPAGE_VARIABLE}" $XPUI_TEMP1
+
+    !endif
+    
+    StrCmp `${XPUI_STARTMENUPAGE_VARIABLE}` `` 0 +2
+      StrCpy `${XPUI_STARTMENUPAGE_VARIABLE}` `${XPUI_STARTMENUPAGE_FOLDER}`
+    !ifdef XPUI_FASTERSKINNING
+    IfFileExists $PLUGINSDIR\StartMenu.ini 0 +2
+      ReadINIStr ${XPUI_STARTMENUPAGE_VARIABLE} $PLUGINSDIR\StartMenu.ini "Field 2" State
+    !else
+    IfFileExists $PLUGINSDIR\StartMenu.ini 0 +2
+      ReadINIStr $XPUI_TEMP1 $PLUGINSDIR\StartMenu.ini "Field 2" State
+      StrCmp $XPUI_TEMP1 '$$(^Name)' +2
+      StrCpy ${XPUI_STARTMENUPAGE_VARIABLE} $XPUI_TEMP1
+    !endif
+    
+    !insertmacro XPUI_HEADER_TEXT $(XPUI_${XPUI_UN}STARTMENUPAGE_TITLE) $(XPUI_${XPUI_UN}STARTMENUPAGE_SUBTITLE)
+    
+    !ifdef XPUI_FASTERSKINNING
+    
+      !insertmacro XPUI_STARTMENUPAGE_CREATEINI
+      
+    !else
+    
+    !endif
+    
+      WriteINIStr $PLUGINSDIR\StartMenu.ini "Field 3" State "${XPUI_STARTMENUPAGE_VARIABLE}"
+      WriteINIStr $PLUGINSDIR\StartMenu.ini `Settings` `RTL` `$(^RTL)`
+      
+      InstallOptions::initDialog /NOUNLOAD $PLUGINSDIR\Startmenu.ini
+        Pop $XPUI_HWND
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+        GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1200
+          !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+          SendMessage $XPUI_TEMP1 0xC 0 `STR:$(XPUI_${XPUI_UN}STARTMENUPAGE_TEXT)`
+        GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1201
+        !insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+          SendMessage $XPUI_TEMP1 0xC 0 "STR:${XPUI_STARTMENUPAGE_VARIABLE}"
+        GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1202
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+        GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1203
+        !insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+        SendMessage $XPUI_TEMP1 0xC 0 `STR:$(XPUI_${XPUI_UN}STARTMENUPAGE_CHECKBOX)`
+        !ifdef XPUI_STARTMENUPAGE_NODISABLE
+          ShowWindow $XPUI_TEMP1 0
+        !endif
+        LockWindow off
+        !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+        GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1099
+        ShowWindow $XPUI_TEMP1 0
+        !ifndef XPUI_BGIMAGE
+        SetBrandingImage /IMGID=1302 "$PLUGINSDIR\LeftImg.bmp"
+        !else
+        SetBrandingImage /IMGID=1099 "$PLUGINSDIR\BgImage.bmp"
+        !endif
+        GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1099
+        ShowWindow $XPUI_TEMP1 5
+      InstallOptions::show
+
+    LockWindow off
+    
+  FunctionEnd
+  
+  Function ${XPUI_UNFUNC}xpui.StartMenu.leave.${XPUI_UNIQUEID}
+  
+    LockWindow on
+    ReadINIStr $XPUI_TEMP1 $PLUGINSDIR\StartMenu.ini Settings State
+    StrCmp $XPUI_TEMP1 3 list
+    StrCmp $XPUI_TEMP1 4 check
+    goto done
+    list:
+      ReadINIStr $XPUI_TEMP1 $PLUGINSDIR\StartMenu.ini "Field 3" State
+      GetDlgItem $XPUI_TEMP2 $XPUI_HWND 1201
+      SendMessage $XPUI_TEMP2 0xC 0 STR:$XPUI_TEMP1
+      LockWindow off
+      abort
+    check:
+      ReadINIStr $XPUI_TEMP1 $PLUGINSDIR\StartMenu.ini "Field 4" State
+      StrCmp $XPUI_TEMP1 1 +3
+        StrCpy $XPUI_TEMP1 1
+        goto +2
+        StrCpy $XPUI_TEMP1 0
+      GetDlgItem $XPUI_TEMP2 $XPUI_HWND 1201
+      EnableWindow $XPUI_TEMP2 $XPUI_TEMP1
+      GetDlgItem $XPUI_TEMP2 $XPUI_HWND 1202
+      EnableWindow $XPUI_TEMP2 $XPUI_TEMP1
+      
+      StrCpy $XPUI_TEMP2 "NOTIFY"
+      StrCmp $XPUI_TEMP1 0 0 +2
+        StrCpy $XPUI_TEMP2 "NOTIFY|DISABLED"
+      WriteINIStr $PLUGINSDIR\StartMenu.ini "Field 2" Flags $XPUI_TEMP2
+      WriteINIStr $PLUGINSDIR\StartMenu.ini "Field 3" Flags $XPUI_TEMP2
+      LockWindow off
+      abort
+    done:
+      
+      ReadINIStr ${XPUI_STARTMENUPAGE_VARIABLE} $PLUGINSDIR\StartMenu.ini "Field 2" State
+      ReadINIStr $XPUI_TEMP1 $PLUGINSDIR\StartMenu.ini "Field 4" State
+      StrCmp $XPUI_TEMP1 1 0 +2
+        StrCpy ${XPUI_STARTMENUPAGE_VARIABLE} >${XPUI_STARTMENUPAGE_VARIABLE}
+  
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+    
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1099
+      ShowWindow $XPUI_TEMP1 5
+    
+  FunctionEnd
+
+  !undef XPUI_STARTMENUPAGE_VARIABLE
+  
+  !ifdef XPUI_FASTERSKINNING
+    !insertmacro XPUI_STARTMENUPAGE_KILLARRAY
+  !endif
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+  
+!macroend
+
+!macro XPUI_PAGE_STARTMENU_SHOW ID
+  
+  PageEx ${XPUI_UNFUNC}custom 
+    PageCallbacks ${XPUI_UNFUNC}xpui.StartMenu.show.${XPUI_STARTMENUPAGE_${ID}_ID} ${XPUI_UNFUNC}xpui.StartMenu.leave.${XPUI_STARTMENUPAGE_${ID}_ID}
+    Caption "$(XPUI_${XPUI_UN}STARTMENUPAGE_CAPTION)"
+  PageExEnd
+  
+  !undef XPUI_STARTMENUPAGE_${ID}_ID
+
+!macroend
+
+!macro XPUI_PAGE_STARTMENU ID VAR
+  !insertmacro XPUI_PAGE_STARTMENU_INIT `${ID}` `${VAR}`
+  !insertmacro XPUI_PAGE_STARTMENU_SHOW `${ID}`
+!macroend
+
+!macro XPUI_STARTMENUPAGE_INITARRAY
+
+  !ifndef XPUI_INTERNAL_SMPAGE_ARRAY_DEFINED
+  !define XPUI_INTERNAL_SMPAGE_ARRAY_DEFINED
+
+  !include "${NSISDIR}\Include\NSISArray.nsh"
+  ${Array} xpuiSM 1024 128
+  ${ArrayFunc} Read
+  ${ArrayFunc} Clear
+  ${ArrayFunc} Push
+  ${ArrayFunc} Reverse
+  ${ArrayFunc} ReadFirst
+  ${ArrayFunc} ReadNext
+  ${ArrayFunc} Sort
+  ${ArrayFunc} ExistsI
+  ${ArrayFunc} ReadClose
+  ${ArrayFunc} Debug
+  !endif
+!macroend
+
+!macro XPUI_STARTMENUPAGE_KILLARRAY
+  !ifdef xpui.ArrayNoValVar.notDefined
+    !undef ArrayNoValVar
+  !endif
+!macroend
+
+!macro XPUI_STARTMENUPAGE_CREATEINI
+  !ifndef "xpuiSM${Array_Obj}Init"
+    !insertmacro XPUI_STARTMENUPAGE_INITARRAY
+  !endif
+  SetOutPath $PLUGINSDIR
+    IfFileExists $PLUGINSDIR\StartMenu.ini +2
+    File "${XPUI_SYSDIR}\INI\StartMenu.ini"
+    StrCpy $XPUI_TEMP2 ""
+
+    !ifndef XPUI_INTERNAL_SMPAGE_ARRAY_INITED
+    !define XPUI_INTERNAL_SMPAGE_ARRAY_INITED
+    ${xpuiSM${Array_Obj}Init}
+    !endif
+
+    SetShellVarContext current
+    FindFirst $XPUI_HWND $XPUI_TEMP1 "$SMPROGRAMS\*"
+    FindNext  $XPUI_HWND $XPUI_TEMP1
+      loop:
+      FindNext  $XPUI_HWND $XPUI_TEMP1
+      StrCmp $XPUI_TEMP1 "" exit
+      IfFileExists $SMPROGRAMS\$XPUI_TEMP1\* add
+      goto loop
+      add:
+        ${xpuiSM${Array_Obj}ExistsI} $XPUI_TEMP2 $XPUI_TEMP1 0
+        StrCmp $XPUI_TEMP2 -1 "" NoAdd
+          ${xpuiSM${Array_Obj}Push} $XPUI_TEMP1
+        NoAdd:
+      goto loop
+      exit:
+      FindClose $XPUI_HWND
+    SetShellVarContext all
+    FindFirst $XPUI_HWND $XPUI_TEMP1 "$SMPROGRAMS\*"
+    FindNext  $XPUI_HWND $XPUI_TEMP1
+      loop2:
+      FindNext  $XPUI_HWND $XPUI_TEMP1
+      StrCmp $XPUI_TEMP1 "" exit2
+      IfFileExists $SMPROGRAMS\$XPUI_TEMP1\* add2
+      goto loop2
+      add2:
+        ${xpuiSM${Array_Obj}ExistsI} $XPUI_TEMP2 $XPUI_TEMP1 0
+        StrCmp $XPUI_TEMP2 -1 "" NoAdd2
+          ${xpuiSM${Array_Obj}Push} $XPUI_TEMP1
+        NoAdd2:
+      goto loop2
+      exit2:
+      FindClose $XPUI_HWND
+
+      ${xpuiSM${Array_Obj}Sort} ""
+
+      ; Build the list
+      StrCpy $XPUI_HWND  ""
+      StrCpy $XPUI_TEMP1 ""
+      StrCpy $XPUI_TEMP2 ""
+      ClearErrors
+      ${xpuiSM${Array_Obj}ReadFirst} $XPUI_TEMP1 $XPUI_TEMP2
+        build:
+        IfErrors finish
+        StrCmp $XPUI_TEMP2 "" finish
+        StrCpy $XPUI_HWND $XPUI_HWND|$XPUI_TEMP2
+        ClearErrors
+        ${xpuiSM${Array_Obj}ReadNext} $XPUI_TEMP1 $XPUI_TEMP2
+        Goto build
+      finish:
+      ${xpuiSM${Array_Obj}ReadClose} $XPUI_TEMP1
+      ${xpuiSM${Array_Obj}Delete}
+      StrCpy $XPUI_HWND $XPUI_HWND "" 1
+      
+      WriteINIStr $PLUGINSDIR\StartMenu.ini "Field 3" ListItems $XPUI_HWND
+
+!macroend
+
+!macro XPUI_STARTMENU_GETFOLDER ID VAR
+
+  !ifdef XPUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT & XPUI_STARTMENUPAGE_${ID}_REGISTRY_KEY & XPUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME
+
+    ReadRegStr $XPUI_TEMP1 "${XPUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT}" "${XPUI_STARTMENUPAGE_${ID}_REGISTRY_KEY}" "${XPUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME}"
+      StrCmp $XPUI_TEMP1 "" +3
+        StrCpy "${VAR}" $XPUI_TEMP1
+        Goto +2
+
+        StrCpy "${VAR}" "${XPUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"
+
+   !else
+   
+     StrCpy "${VAR}" "${XPUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"
+
+   !endif
+
+!macroend
+
+!macro XPUI_STARTMENU_WRITE_BEGIN ID
+
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+
+  !define XPUI_STARTMENUPAGE_CURRENT_ID "${ID}"
+
+  StrCpy $XPUI_TEMP1 "${XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" 1
+  StrCmp $XPUI_TEMP1 ">" XPUI.startmenu_write_${XPUI_STARTMENUPAGE_CURRENT_ID}_done
+
+  StrCmp "${XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" "" 0 XPUI.startmenu_writebegin_${XPUI_STARTMENUPAGE_CURRENT_ID}_notempty
+
+    !insertmacro XPUI_STARTMENU_GETFOLDER "${XPUI_STARTMENUPAGE_CURRENT_ID}" "${XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"
+
+  XPUI.startmenu_writebegin_${XPUI_STARTMENUPAGE_CURRENT_ID}_notempty:
+
+  !verbose pop
+
+!macroend
+
+!macro XPUI_STARTMENU_WRITE_END
+
+  !verbose push
+  !verbose ${XPUI_VERBOSE}
+
+  !ifdef XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT & XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY & XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME
+    WriteRegStr "${XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT}" "${XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY}" "${XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME}" "${XPUI_STARTMENUPAGE_${XPUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"
+  !endif
+
+  XPUI.startmenu_write_${XPUI_STARTMENUPAGE_CURRENT_ID}_done:
+
+  !undef XPUI_STARTMENUPAGE_CURRENT_ID
+
+  !verbose pop
+
+!macroend
+
+; END START MENU PAGE
+
+; INSTALL CONFIRMATION PAGE
+!macro XPUI_PAGE_INSTCONFIRM
+
+  !insertmacro XPUI_PAGECHECKS
+  
+  !ifndef XPUI_INTERNAL_PAGEUSED_INSTCONFIRM
+    !define XPUI_INTERNAL_PAGEUSED_INSTCONFIRM
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTCONFIRMPAGE_TITLE "$(XPUI_${XPUI_UN}INSTCONFIRMPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTCONFIRMPAGE_SUBTITLE "$(XPUI_${XPUI_UN}INSTCONFIRMPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTCONFIRMPAGE_CAPTION "$(XPUI_${XPUI_UN}INSTCONFIRMPAGE_CAPTION)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_TOP "$(XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_BOTTOM "$(XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_BOTTOM)"
+  
+  !insertmacro XPUI_CREATEID
+  
+  PageEx ${XPUI_UNFUNC}custom
+    Caption `${XPUI_${XPUI_UN}INSTCONFIRMPAGE_CAPTION}`
+    PageCallbacks `${XPUI_UNFUNC}XPUI.instconfirm.${XPUI_UNIQUEID}.show` `${XPUI_UNFUNC}XPUI.instconfirm.${XPUI_UNIQUEID}.verify`
+  PageExEnd
+  
+  Function `${XPUI_UNFUNC}XPUI.instconfirm.${XPUI_UNIQUEID}.show`
+    
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+      
+    !ifdef XPUI_FASTERSKINNING
+    SetOutPath $PLUGINSDIR
+    File `${XPUI_SYSDIR}\INI\confirm.ini`
+    !endif
+    
+    !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}INSTCONFIRMPAGE_TITLE}` `${XPUI_${XPUI_UN}INSTCONFIRMPAGE_SUBTITLE}`
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE
+    
+    WriteINIStr $PLUGINSDIR\Confirm.ini `Field 1` Text `${XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_TOP}`
+    WriteINIStr $PLUGINSDIR\Confirm.ini `Field 2` Text `${XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_BOTTOM}`
+    !ifdef XPUI_INSTCONFIRMPAGE_INFOBOX
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 2` Bottom 98
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` Type Text
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` Flags GROUP|MULTILINE|READONLY
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` Left 6
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` Right -1
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` Top 104
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` Bottom 204
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` State `Installation Settings:\r\n______________________________________________________________\r\n\r\nDestination folder: $INSTDIR`
+    
+      !ifdef XPUI_INTERNAL_STARTMENUPAGE_ID_DEFAULT
+        !insertmacro XPUI_STARTMENU_WRITE_BEGIN ${XPUI_INTERNAL_STARTMENUPAGE_ID_DEFAULT}
+        WriteINIStr $PLUGINSDIR\Confirm.ini `Field 5` State `Installation Settings:\r\n______________________________________________________________\r\n\r\nDestination folder: $INSTDIR\r\nStart Menu Folder: ${XPUI_STARTMENUPAGE_${XPUI_INTERNAL_STARTMENUPAGE_ID_DEFAULT}_VARIABLE}`
+        !insertmacro XPUI_STARTMENU_WRITE_END
+      !endif
+      
+      WriteINIStr $PLUGINSDIR\Confirm.ini `Settings` Numfields 5
+    !endif
+    WriteINIStr `$PLUGINSDIR\Confirm.ini` `Settings` `RTL` `$(^RTL)`
+    InstallOptions::initDialog /NOUNLOAD $PLUGINSDIR\confirm.ini
+    Pop $XPUI_TEMP2
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP2
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1200
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1201
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1202
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1203
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1204
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    !ifndef XPUI_NOLOCK
+    LockWindow off
+    !endif
+    
+    !ifdef UMUI_CONFIRMPAGE_TEXTBOX
+    Goto +2
+    Call `${UMUI_CONFIRMPAGE_TEXTBOX}`
+    !undef UMUI_CONFIRMPAGE_TEXTBOX
+    !endif
+          
+    InstallOptions::show
+    
+  FunctionEnd
+  
+  Function `${XPUI_UNFUNC}XPUI.instconfirm.${XPUI_UNIQUEID}.verify`
+    
+    !ifndef XPUI_NOLOCK
+    LockWindow on
+    !endif
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  
+  FunctionEnd
+  
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_PRE
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_SHOW
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_LEAVE
+  
+  !undef XPUI_${XPUI_UN}INSTCONFIRMPAGE_TITLE
+  !undef XPUI_${XPUI_UN}INSTCONFIRMPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}INSTCONFIRMPAGE_CAPTION
+  !undef XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}INSTCONFIRMPAGE_TEXT_BOTTOM
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+!macroend
+
+; INSTFILES PAGE
+!macro XPUI_PAGE_INSTFILES
+
+  !ifdef UMUI_INSTFILEPAGE_ENABLE_CANCEL_BUTTON
+    !ifndef UMUI_NB_CALL_FUNCTION_CANCEL_DEFINED
+      !define UMUI_NB_CALL_FUNCTION_CANCEL_DEFINED
+      Var UMUI_NB_CALL_FUNCTION_CANCEL
+    !endif
+  !endif
+
+  !insertmacro XPUI_PAGECHECKS
+
+  !ifndef XPUI_INTERNAL_PAGEUSED_INSTFILES
+    !define XPUI_INTERNAL_PAGEUSED_INSTFILES
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTFILESPAGE_TITLE "$(XPUI_${XPUI_UN}INSTFILESPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTFILESPAGE_SUBTITLE "$(XPUI_${XPUI_UN}INSTFILESPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTFILESPAGE_CAPTION "$(XPUI_${XPUI_UN}INSTFILESPAGE_CAPTION)"
+  
+  !insertmacro XPUI_CREATEID
+  
+  PageEx ${XPUI_UNFUNC}instfiles
+    Caption `${XPUI_${XPUI_UN}INSTFILESPAGE_CAPTION}`
+    PageCallbacks `${XPUI_UNFUNC}XPUI.cpy.${XPUI_UNIQUEID}.pre` `${XPUI_UNFUNC}XPUI.cpy.${XPUI_UNIQUEID}.show` `${XPUI_UNFUNC}XPUI.cpy.${XPUI_UNIQUEID}.leave`
+  PageExEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.cpy.${XPUI_UNIQUEID}.pre
+    
+    StrCmp $XPUI_ABORTED 1 0 +3
+      SetAutoClose true
+      Abort
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE
+    
+    Return
+    
+  FunctionEnd
+  
+  Function ${XPUI_UNFUNC}XPUI.cpy.${XPUI_UNIQUEID}.show
+  
+    !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}INSTFILESPAGE_TITLE}` `${XPUI_${XPUI_UN}INSTFILESPAGE_SUBTITLE}`
+    
+    FindWindow $XPUI_TEMP1 "#32770" "" $HWNDPARENT
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+  
+    !insertmacro XPUI_PAGECOLOR_INIT 1027
+    !insertmacro XPUI_PAGECOLOR_INIT 1004
+    !insertmacro XPUI_PAGECOLOR_INIT 1006
+    !insertmacro XPUI_PAGECOLOR_INIT 1016
+    
+    !ifdef XPUI_BGIMAGE
+      FindWindow $XPUI_TEMP1 "#32770" "" $HWNDPARENT
+      GetDlgItem $XPUI_TEMP1 $XPUI_TEMP1 1006
+      ShowWindow $XPUI_TEMP1 0
+    !endif
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+    
+      !ifdef UMUI_INSTFILEPAGE_ENABLE_CANCEL_BUTTON
+      	StrCpy $UMUI_NB_CALL_FUNCTION_CANCEL 0
+	GetDlgItem $XPUI_TEMP1 $HWNDPARENT 2
+	EnableWindow $XPUI_TEMP1 1
+      !endif
+    
+    LockWindow off
+  FunctionEnd
+    
+  Function ${XPUI_UNFUNC}XPUI.cpy.${XPUI_UNIQUEID}.leave
+  
+        !ifdef UMUI_INSTFILEPAGE_ENABLE_CANCEL_BUTTON
+		StrCmp $XPUI_ABORTED 1 0 +5
+		StrCmp $UMUI_NB_CALL_FUNCTION_CANCEL 0 0 +4
+		StrCpy $UMUI_NB_CALL_FUNCTION_CANCEL 1
+		Call `${UMUI_INSTFILEPAGE_ENABLE_CANCEL_BUTTON}`
+		SetAutoClose true
+	!endif
+	!insertmacro XPUI_UNSET UMUI_INSTFILEPAGE_ENABLE_CANCEL_BUTTON
+    
+    LockWindow on
+    IfAbort 0 Good
+    !insertmacro XPUI_HEADER_TEXT `$(XPUI_${XPUI_UN}INSTFILESPAGE_FAIL_TITLE)` `$(XPUI_${XPUI_UN}INSTFILESPAGE_FAIL_SUBTITLE)`
+    Goto TitleFinish
+    Good:
+    !insertmacro XPUI_HEADER_TEXT `$(XPUI_${XPUI_UN}INSTFILESPAGE_DONE_TITLE)` `$(XPUI_${XPUI_UN}INSTFILESPAGE_DONE_SUBTITLE)`
+    TitleFinish:
+    LockWindow off
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  
+  FunctionEnd
+  
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_PRE
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_SHOW
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_LEAVE
+  
+  !undef XPUI_${XPUI_UN}INSTFILESPAGE_TITLE
+  !undef XPUI_${XPUI_UN}INSTFILESPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}INSTFILESPAGE_CAPTION
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+!macroend
+
+; FINISH PAGE
+!macro XPUI_PAGE_FINISH
+
+  !insertmacro XPUI_PAGECHECKS
+
+  !ifndef XPUI_INTERNAL_PAGEUSED_FINISH
+    !define XPUI_INTERNAL_PAGEUSED_FINISH
+  !endif
+  
+  !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_LANGUAGE_CONVERT
+  
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_TITLE             "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_TEXT              "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT)"
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_BUTTON            "$(^CloseBtn)"
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_TEXT_REBOOT       "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT)"
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_TEXT_REBOOTNOW    "$(XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_REBOOT)"
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_TEXT_REBOOTLATER  "$(XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_NOREBOOT)"
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_RUN_TEXT          "$(XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_RUN)"
+  !insertmacro XPUI_DEFAULT MUI_FINISHPAGE_SHOWREADME_TEXT   "$(XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_DOCS)"
+  !ifdef MUI_FINISHPAGE_NOREBOOTSUPPORT
+    !define XPUI_${XPUI_UN}FINISHPAGE_REBOOT_DISABLE
+    !undef MUI_FINISHPAGE_NOREBOOTSUPPORT
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_TITLE "$(XPUI_${XPUI_UN}FINISHPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_SUBTITLE "$(XPUI_${XPUI_UN}FINISHPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_CAPTION "$(XPUI_${XPUI_UN}FINISHPAGE_CAPTION)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_RUN  "$(XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_RUN)"   # No LangString for this one
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_DOCS "$(XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_DOCS)"  # No LangString for this one
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_TEXT "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_TEXT_RUN "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT_RUN)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP_ALT "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP_ALT)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT "$(XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_REBOOT_MESSAGEBOX "$(XPUI_${XPUI_UN}FINISHPAGE_REBOOT_MESSAGEBOX)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_REBOOT "$(XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_REBOOT)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_NOREBOOT "$(XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_NOREBOOT)"
+  
+  PageEx ${XPUI_UNFUNC}custom
+    Caption `${XPUI_${XPUI_UN}FINISHPAGE_CAPTION}`
+    PageCallbacks `${XPUI_UNFUNC}XPUI.finish.${XPUI_UNIQUEID}.show` `${XPUI_UNFUNC}XPUI.finish.${XPUI_UNIQUEID}.verify`
+  PageExEnd
+  
+  !ifndef XPUI_VAR_REBOOT
+  Var XPUI_REBOOT
+  !define XPUI_VAR_REBOOT
+  !endif
+  
+  Function `${XPUI_UNFUNC}XPUI.FINISH.${XPUI_UNIQUEID}.show`
+  
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+    
+    ; SET THE XPUI LOCAL REBOOT FLAG
+    StrCpy $XPUI_REBOOT 0
+    
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_REBOOT_FORCE
+      StrCpy $XPUI_REBOOT 1
+    !endif
+    
+    !ifndef XPUI_${XPUI_UN}FINISHPAGE_NOREBOOT
+      IfRebootFlag `` +2
+        StrCpy $XPUI_REBOOT 1
+    !endif
+    
+    !ifdef `XPUI_${XPUI_UN}FINISHPAGE_ABORT_ON_NOREBOOT`
+      StrCmp $XPUI_REBOOT 1 `` 0 +2
+        Abort
+    !endif
+    
+    ; Extract the INI
+    !ifdef XPUI_FASTERSKINNING
+    SetOutPath $PLUGINSDIR
+    File `${XPUI_SYSDIR}\INI\finish.ini`
+    !endif
+    
+    !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}FINISHPAGE_TITLE}` `${XPUI_${XPUI_UN}FINISHPAGE_SUBTITLE}`
+    
+    StrCmp $XPUI_REBOOT 1 `` XPUI.finish.norb.${XPUI_UNIQUEID}
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 1` Type RadioButton
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 2` Type RadioButton
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 1` Text `${XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_REBOOT}`
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 2` Text `${XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_NOREBOOT}`
+    XPUI.finish.norb.${XPUI_UNIQUEID}:
+    
+    StrCmp $XPUI_REBOOT 1 XPUI.nochk
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_RUN_NOTCHECKED
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 1` State 0
+    !endif
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_DOCS_NOTCHECKED
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 2` State 0
+    !endif
+    XPUI.nochk:
+    
+    StrCmp $XPUI_REBOOT 1 `` +2
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 2` State 0
+    
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_LINK_TEXT
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 3` Text `${XPUI_${XPUI_UN}FINISHPAGE_LINK_TEXT}`
+    !endif
+    
+    StrCmp $XPUI_REBOOT 1 `` +3
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 5` Text  `${XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT}`
+    Goto +2
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_RUN & XPUI_${XPUI_UN}FINISHPAGE_DOCS
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 5` Text `${XPUI_${XPUI_UN}FINISHPAGE_TEXT_RUN}`
+    !else
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 5` Text `${XPUI_${XPUI_UN}FINISHPAGE_TEXT}`
+    !endif
+    
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_TEXT_USE_TOP_ALT
+    WriteINIStr $PLUGINSDIR\Finish.ini `Field 4` Top 17
+    !endif
+    
+    !ifndef XPUI_FINISHPAGE_NOCLOSEBUTTON
+      WriteINIStr $PLUGINSDIR\Finish.ini Settings NextButtonText $(XPUI_BUTTONTEXT_CLOSE)
+    !endif
+    
+    WriteINIStr `$PLUGINSDIR\Finish.ini` `Settings` `RTL` `$(^RTL)`
+    InstallOptions::initDialog /NOUNLOAD $PLUGINSDIR\finish.ini
+    Pop $XPUI_TEMP2
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP2
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1
+    EnableWindow $XPUI_TEMP1 1
+    !ifndef XPUI_FINISHPAGE_NOCLOSEBUTTON
+    SendMessage $XPUI_TEMP1 0xC 0 STR:$(XPUI_BUTTONTEXT_CLOSE)
+    !endif
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 2
+    SendMessage $XPUI_TEMP1 0xC `` `STR:$(^CancelBtn)`
+    EnableWindow $XPUI_TEMP1 1
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 3
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_NO_REINSTALL
+      EnableWindow $XPUI_TEMP1 0
+    !endif
+    
+    LockWindow on
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1200
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    StrCmp $XPUI_REBOOT 1 a
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_RUN
+    SendMessage $XPUI_TEMP1 0xC 0 `STR:${XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_RUN}`
+    !endif
+    a:
+    
+    StrCmp $XPUI_REBOOT 1 XPUI.norunchk
+    !ifndef XPUI_${XPUI_UN}FINISHPAGE_RUN
+    ShowWindow $XPUI_TEMP1 0
+    !endif
+    XPUI.norunchk:
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1201
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    StrCmp $XPUI_REBOOT 1 b
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_DOCS
+    SendMessage $XPUI_TEMP1 0xC 0 `STR:${XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_DOCS}`
+    !endif
+    b:
+    
+    StrCmp $XPUI_REBOOT 1 XPUI.nodocchk
+    !ifndef XPUI_${XPUI_UN}FINISHPAGE_DOCS
+    ShowWindow $XPUI_TEMP1 0
+    !endif
+    XPUI.nodocchk:
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1203
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1203
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    SendMessage $XPUI_TEMP1 0xC 0 `STR:${XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP}`
+    CreateFont $XPUI_HWND `$(^Font)` 12 700 ; previously Tahoma
+    SendMessage $XPUI_TEMP1 0x30 $XPUI_HWND $XPUI_HWND
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_TEXT_USE_TOP_ALT
+      SendMessage $XPUI_TEMP1 0xC 0 `STR:${XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP_ALT}`
+      CreateFont $XPUI_HWND `$(^Font)` 8 700 ; previously MS Sans Serif
+      SendMessage $XPUI_TEMP1 0x30 $XPUI_HWND $XPUI_HWND
+    !endif
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1204
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    
+    !ifndef XPUI_${XPUI_UN}FINISHPAGE_RUN & XPUI_${XPUI_UN}FINISHPAGE_DOCS
+    StrCmp $XPUI_REBOOT 1 XPUI.no-normal-text
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1200
+    ShowWindow $XPUI_TEMP1 0
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1201
+    ShowWindow $XPUI_TEMP1 0
+    XPUI.no-normal-text:
+    !endif
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1202
+    !insertmacro XPUI_CONTROL_SKIN_LIGHT $XPUI_TEMP1
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_LINK_TEXT
+    SendMessage $XPUI_TEMP1 0xC 0 `STR:${XPUI_${XPUI_UN}FINISHPAGE_LINK_TEXT}`
+    !endif
+    !ifndef XPUI_${XPUI_UN}FINISHPAGE_LINK
+    ShowWindow $XPUI_TEMP1 0
+    !endif
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+    SetBrandingImage /IMGID=1019 /RESIZETOFIT "$PLUGINSDIR\page.bmp"
+    
+    LockWindow off
+    InstallOptions::show
+  FunctionEnd
+  
+  Function `${XPUI_UNFUNC}XPUI.FINISH.${XPUI_UNIQUEID}.verify`
+    StrCmp $XPUI_ABORTED 1 XPUI.grinding-halt
+    
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_LINK
+    ReadINIStr $XPUI_TEMP1 `$PLUGINSDIR\Finish.ini` `Settings` `State`
+    StrCmp $XPUI_TEMP1 3 `` XPUI.nolink
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_LINK_FUNCTION
+    Call `${XPUI_${XPUI_UN}FINISHPAGE_LINK_FUNCTION}`
+    !else
+      !ifdef XPUI_${XPUI_UN}FINISHPAGE_LINK_LOCATION
+        ExecShell open `${XPUI_${XPUI_UN}FINISHPAGE_LINK_LOCATION}`
+      !else
+        MessageBox MB_OK|MB_ICONINFORMATION `Developer: Please specify a function for the Finish Page link to run in the symbol XPUI_${XPUI_UN}FINISHPAGE_LINK_FUNCTION or specify a location (local or http) to load in XPUI_${XPUI_UN}FINISHPAGE_LINK_LOCATION.  The Abort command is called automatically.$\n$\nUser: The developer of this setup program specified that a link be shown on this page, but he/she did not define what the link will do.  Please contact the company from which you obtained this installer and tell them about this message.`
+      !endif
+    !endif
+    LockWindow off
+    Abort
+    XPUI.nolink:
+    !endif
+    
+    !ifndef XPUI_${XPUI_UN}FINISHPAGE_NOREBOOT
+    ReadINIStr $XPUI_TEMP1 `$PLUGINSDIR\Finish.ini` `Settings` `State`
+    StrCmp $XPUI_TEMP1 1 `` XPUI.nodonebutton
+    StrCmp $XPUI_TEMP1 2 `` XPUI.nodonebutton
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1
+    EnableWindow $XPUI_TEMP1 1
+    Abort
+    XPUI.nodonebutton:
+    !endif
+    
+    ReadINIStr $XPUI_TEMP1 `$PLUGINSDIR\Finish.ini` `Field 1` `State`
+    ReadINIStr $XPUI_TEMP2 `$PLUGINSDIR\Finish.ini` `Field 2` `State`
+    
+    StrCmp $XPUI_REBOOT 1 `` XPUI.norb2
+    StrCmp $XPUI_TEMP1 1 `` XPUI.norb
+    MessageBox MB_OKCANCEL|MB_ICONINFORMATION `${XPUI_${XPUI_UN}FINISHPAGE_REBOOT_MESSAGEBOX}` IDCANCEL XPUI.done
+    # the big...
+    Reboot # REBOOT! (Wow)
+    XPUI.norb:
+    Goto XPUI.done
+    
+    XPUI.norb2:
+    
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_RUN
+      !ifdef XPUI_${XPUI_UN}FINISHPAGE_RUN_FILE
+        StrCmp $XPUI_TEMP1 1 `` NoCallRun
+        Exec `${XPUI_${XPUI_UN}FINISHPAGE_RUN_FILE}`
+      !endif
+      !ifdef XPUI_${XPUI_UN}FINISHPAGE_RUN_FUNCTION
+        StrCmp $XPUI_TEMP1 1 `` NoCallRun
+        Call `${XPUI_${XPUI_UN}FINISHPAGE_RUN_FUNCTION}`
+      !endif
+      NoCallRun:
+    !endif
+    
+    !ifdef XPUI_${XPUI_UN}FINISHPAGE_DOCS
+      !ifdef XPUI_${XPUI_UN}FINISHPAGE_DOCS_FILE
+      StrCmp $XPUI_TEMP2 1 `` NoCallDocs
+      ExecShell open `${XPUI_${XPUI_UN}FINISHPAGE_DOCS_FILE}`
+      !endif
+      !ifdef XPUI_${XPUI_UN}FINISHPAGE_DOCS_FUNCTION
+      StrCmp $XPUI_TEMP2 1 `` NoCallDocs
+      Call `${XPUI_${XPUI_UN}FINISHPAGE_DOCS_FUNCTION}`
+      !endif
+      NoCallDocs:
+    !endif
+    
+    XPUI.done:
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+    
+    XPUI.grinding-halt:
+    SetRebootFlag false
+  
+  FunctionEnd
+  
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_PRE
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_SHOW
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_LEAVE
+  
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_LINK
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_LINK_FUNCTION
+  
+  !insertmacro XPUI_UNSET MUI_FINISHPAGE_LINK
+  !insertmacro XPUI_UNSET MUI_FINISHPAGE_LINK_LOCATION
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_LINK_LOCATION
+  
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_RUN
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_RUN_FILE
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_RUN_FUNCTION
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_DOCS
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_DOCS_FILE
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_DOCS_FUNCTION
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_REBOOT_DISABLE
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_REBOOT_FORCE
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_RUN
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_CHECKBOX_DOCS
+  !insertmacro XPUI_UNSET XPUI_UNFINISHPAGE_CHECKBOX_RUN
+  !insertmacro XPUI_UNSET XPUI_UNFINISHPAGE_CHECKBOX_DOCS
+  !insertmacro XPUI_UNSET XPUI_${XPUI_UN}FINISHPAGE_NOCLOSEBUTTON
+  
+  !undef XPUI_${XPUI_UN}FINISHPAGE_CAPTION
+  !undef XPUI_${XPUI_UN}FINISHPAGE_TITLE
+  !undef XPUI_${XPUI_UN}FINISHPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}FINISHPAGE_TEXT_TOP_ALT
+  !undef XPUI_${XPUI_UN}FINISHPAGE_TEXT
+  !undef XPUI_${XPUI_UN}FINISHPAGE_TEXT_RUN
+  !undef XPUI_${XPUI_UN}FINISHPAGE_TEXT_REBOOT
+  !undef XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_REBOOT
+  !undef XPUI_${XPUI_UN}FINISHPAGE_RADIOBUTTON_NOREBOOT
+  !undef XPUI_${XPUI_UN}FINISHPAGE_REBOOT_MESSAGEBOX
+  
+  !undef MUI_FINISHPAGE_TITLE
+  !undef MUI_FINISHPAGE_TEXT
+  !undef MUI_FINISHPAGE_BUTTON
+  !undef MUI_FINISHPAGE_TEXT_REBOOT
+  !undef MUI_FINISHPAGE_TEXT_REBOOTNOW
+  !undef MUI_FINISHPAGE_TEXT_REBOOTLATER
+  !undef MUI_FINISHPAGE_RUN_TEXT
+  !undef MUI_FINISHPAGE_SHOWREADME_TEXT
+  
+  !verbose pop
+
+!macroend
+
+; INSTALL SUCCESS PAGE
+!macro XPUI_PAGE_INSTSUCCESS
+
+  !insertmacro XPUI_PAGECHECKS
+
+  !ifndef XPUI_INTERNAL_PAGEUSED_INSTSUCCESS
+    !define XPUI_INTERNAL_PAGEUSED_INSTSUCCESS
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTSUCCESSPAGE_TITLE "$(XPUI_${XPUI_UN}INSTSUCCESSPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTSUCCESSPAGE_SUBTITLE "$(XPUI_${XPUI_UN}INSTSUCCESSPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTSUCCESSPAGE_CAPTION "$(XPUI_${XPUI_UN}INSTSUCCESSPAGE_CAPTION)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_TOP "$(XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_BOTTOM "$(XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_BOTTOM)"
+  
+  !insertmacro XPUI_CREATEID
+  
+  PageEx ${XPUI_UNFUNC}custom
+    Caption `${XPUI_${XPUI_UN}INSTSUCCESSPAGE_CAPTION}`
+    PageCallbacks `${XPUI_UNFUNC}XPUI.instSuccess.${XPUI_UNIQUEID}.show` `${XPUI_UNFUNC}XPUI.instSuccess.${XPUI_UNIQUEID}.verify`
+  PageExEnd
+  
+  Function `${XPUI_UNFUNC}XPUI.instSuccess.${XPUI_UNIQUEID}.show`
+    StrCmp $XPUI_ABORTED 1 0 +2
+      Abort
+      
+    !ifdef XPUI_FASTERSKINNING
+    SetOutPath $PLUGINSDIR
+    File `${XPUI_SYSDIR}\INI\confirm.ini`
+    !endif
+    
+    !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}INSTSUCCESSPAGE_TITLE}` `${XPUI_${XPUI_UN}INSTSUCCESSPAGE_SUBTITLE}`
+    
+    WriteINIStr $PLUGINSDIR\Confirm.ini `Settings` NextButtonText `Close`
+    WriteINIStr $PLUGINSDIR\Confirm.ini `Field 1` Text `${XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_TOP}`
+    WriteINIStr $PLUGINSDIR\Confirm.ini `Field 2` Text `${XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_BOTTOM}`
+    WriteINIStr `$PLUGINSDIR\Confirm.ini` `Settings` `RTL` `$(^RTL)`
+    InstallOptions::initDialog /NOUNLOAD $PLUGINSDIR\confirm.ini
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1
+    EnableWindow $XPUI_TEMP1 0
+    SendMessage $XPUI_TEMP1 0xC `` `STR:Next`
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 2
+    SendMessage $XPUI_TEMP1 0xC `` `STR:Close`
+    EnableWindow $XPUI_TEMP1 1
+    Pop $XPUI_TEMP2
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP2
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1200
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1201
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1202
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1203
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $XPUI_TEMP2 1204
+    !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+    StrCpy $XPUI_NOABORTWARNING 1
+    SetBrandingImage /IMGID=1019 /RESIZETOFIT "$PLUGINSDIR\page.bmp"
+    !ifndef XPUI_NOLOCK
+    LockWindow off
+    !endif
+    InstallOptions::show
+  FunctionEnd
+  
+  Function `${XPUI_UNFUNC}XPUI.instSuccess.${XPUI_UNIQUEID}.verify`
+    
+    !ifndef XPUI_NOLOCK
+    LockWindow on
+    !endif
+    
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+    
+  FunctionEnd
+  
+  !undef XPUI_${XPUI_UN}INSTSUCCESSPAGE_CAPTION
+  !undef XPUI_${XPUI_UN}INSTSUCCESSPAGE_TITLE
+  !undef XPUI_${XPUI_UN}INSTSUCCESSPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}INSTSUCCESSPAGE_TEXT_BOTTOM
+  
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_PRE
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_SHOW
+  !insertmacro XPUI_UNSET XPUI_PAGE_CUSTOMFUNCTION_LEAVE
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+  
+!macroend
+
+!macro XPUI_PAGE_ABORT
+
+  !insertmacro XPUI_PAGECHECKS
+  
+  !ifndef XPUI_INTERNAL_PAGEUSED_ABORT
+    !define XPUI_INTERNAL_PAGEUSED_ABORT
+  !endif
+  
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}ABORTPAGE_TITLE "$(XPUI_${XPUI_UN}ABORTPAGE_TITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}ABORTPAGE_SUBTITLE "$(XPUI_${XPUI_UN}ABORTPAGE_SUBTITLE)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}ABORTPAGE_TEXT_TOP "$(XPUI_${XPUI_UN}ABORTPAGE_TEXT_TOP)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}ABORTPAGE_TEXT "$(XPUI_${XPUI_UN}ABORTPAGE_TEXT)"
+  !insertmacro XPUI_DEFAULT XPUI_${XPUI_UN}ABORTPAGE_CAPTION "$(XPUI_${XPUI_UN}ABORTPAGE_CAPTION)"
+  
+  !insertmacro XPUI_CREATEID
+  
+  PageEx ${XPUI_UNFUNC}custom
+  PageCallbacks ${XPUI_UNFUNC}XPUI.io.ABORTPAGE.${XPUI_UNIQUEID} ${XPUI_UNFUNC}XPUI.io.ABORTPAGE.${XPUI_UNIQUEID}.leave
+  Caption `${XPUI_${XPUI_UN}ABORTPAGE_CAPTION}`
+  PageExEnd
+
+  Function ${XPUI_UNFUNC}XPUI.io.ABORTPAGE.${XPUI_UNIQUEID}
+    LockWindow on
+    StrCmp $XPUI_ABORTED 1 +2
+      Abort
+    
+    SetOutPath $PLUGINSDIR
+    File `${XPUI_SYSDIR}\INI\isWelcome.ini`
+
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE    
+
+    WriteINIStr $PLUGINSDIR\isWelcome.ini `Field 1` Text `${XPUI_${XPUI_UN}ABORTPAGE_TEXT_TOP}`
+    WriteINIStr $PLUGINSDIR\isWelcome.ini `Field 2` Text `${XPUI_${XPUI_UN}ABORTPAGE_TEXT}`
+    WriteINIStr `$PLUGINSDIR\isWelcome.ini` `Settings` `RTL` `$(^RTL)`
+    
+    InstallOptions::initDialog /NOUNLOAD `$PLUGINSDIR\isWelcome.ini`
+      
+      Pop $XPUI_HWND
+      !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_HWND
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1200
+        CreateFont $XPUI_TEMP2 `$(^Font)` 8 700 ; previously Tahoma
+        SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 $XPUI_TEMP2
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1201
+        CreateFont $XPUI_TEMP2 `$(^Font)` 8 350 ; previously Tahoma
+        SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 $XPUI_TEMP2
+        !insertmacro XPUI_CONTROL_SKIN_PAGE $XPUI_TEMP1
+      
+      !insertmacro XPUI_HEADER_TEXT `${XPUI_${XPUI_UN}ABORTPAGE_TITLE}` `${XPUI_${XPUI_UN}ABORTPAGE_SUBTITLE}`
+      
+      StrCpy $XPUI_NOABORTWARNING 1
+      
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1
+      EnableWindow $XPUI_TEMP1 0
+      SendMessage $XPUI_TEMP1 0xC 0 STR:$(^NextBtn)
+      
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 3
+      EnableWindow $XPUI_TEMP1 0
+      SendMessage $XPUI_TEMP1 0xC 0 STR:$(^BackBtn)
+      
+      GetDlgItem $XPUI_TEMP1 $HWNDPARENT 2
+      EnableWindow $XPUI_TEMP1 1
+      SendMessage $XPUI_TEMP1 0xC 0 STR:$(^CloseBtn)
+      
+      !insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+      
+      LockWindow off
+      
+    InstallOptions::show
+    FunctionEnd
+    
+    Function ${XPUI_UNFUNC}XPUI.io.ABORTPAGE.${XPUI_UNIQUEID}.leave
+    !ifndef XPUI_NOLOCK
+    LockWindow on
+    !endif
+    !insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+  FunctionEnd
+  
+  !undef XPUI_${XPUI_UN}ABORTPAGE_TITLE
+  !undef XPUI_${XPUI_UN}ABORTPAGE_SUBTITLE
+  !undef XPUI_${XPUI_UN}ABORTPAGE_TEXT_TOP
+  !undef XPUI_${XPUI_UN}ABORTPAGE_TEXT
+  !undef XPUI_${XPUI_UN}ABORTPAGE_CAPTION
+  
+  !insertmacro XPUI_ENDPAGECHECKS
+
+!macroend
+
+!macro XPUI_PAGE_UNINSTCONFIRM_NSIS
+
+!insertmacro XPUI_PAGECHECKS
+
+!insertmacro XPUI_CREATEID
+PageEx un.uninstConfirm
+Caption `$(XPUI_UNINSTCONFIRMPAGE_NSIS_CAPTION)`
+PageCallbacks `un.XPUI.unc_NSIS.${XPUI_UNIQUEID}.pre` `un.XPUI.unc_NSIS.${XPUI_UNIQUEID}.show` `un.XPUI.unc_NSIS.${XPUI_UNIQUEID}.leave`
+PageExEnd
+
+Function `un.XPUI.unc_NSIS.${XPUI_UNIQUEID}.pre`
+StrCmp $XPUI_ABORTED 1 `` +2
+Abort
+!insertmacro XPUI_PAGE_CUSTOMFUNCTION PRE
+FunctionEnd
+
+Function `un.XPUI.unc_NSIS.${XPUI_UNIQUEID}.show`
+
+!insertmacro XPUI_HEADER_TEXT `$(XPUI_UNINSTCONFIRMPAGE_NSIS_TITLE)` `$(XPUI_UNINSTCONFIRMPAGE_NSIS_SUBTITLE)`
+
+FindWindow $XPUI_TEMP1 `#32770` `` $HWNDPARENT
+!insertmacro XPUI_CONTROL_SKIN $XPUI_TEMP1
+
+!insertmacro XPUI_PAGECOLOR_INIT 1019
+!insertmacro XPUI_PAGECOLOR_INIT 1029
+!insertmacro XPUI_PAGECOLOR_INIT 1000
+!insertmacro XPUI_PAGECOLOR_INIT 1006
+
+!insertmacro XPUI_INNERDIALOG_TEXT `$(XPUI_UNINSTCONFIRMPAGE_NSIS_TEXT_TOP)` 1006
+!insertmacro XPUI_INNERDIALOG_TEXT `$(XPUI_UNINSTCONFIRMPAGE_NSIS_TEXT_FOLDER)` 1029
+!insertmacro XPUI_PAGE_CUSTOMFUNCTION SHOW
+FunctionEnd
+
+Function `un.XPUI.unc_NSIS.${XPUI_UNIQUEID}.leave`
+!insertmacro XPUI_PAGE_CUSTOMFUNCTION LEAVE
+FunctionEnd
+!insertmacro XPUI_ENDPAGECHECKS
+!macroEnd
+
+; Page Command
+
+!macro XPUI_PAGE pname
+  !define `XPUI_PAGE_CHECK_${pname}`
+    !ifdef `XPUI_PAGE_CHECK_Welcome`
+    !insertmacro XPUI_PAGE_WELCOME
+    !else ifdef `XPUI_PAGE_CHECK_Welcome2`
+    !insertmacro XPUI_PAGE_WELCOME2
+    !else ifdef `XPUI_PAGE_CHECK_Components`
+    !insertmacro XPUI_PAGE_COMPONENTS
+    !else ifdef `XPUI_PAGE_CHECK_Directory`
+    !insertmacro XPUI_PAGE_DIRECTORY
+    !else ifdef `XPUI_PAGE_CHECK_InstConfirm`
+    !insertmacro XPUI_PAGE_INSTCONFIRM
+    !else ifdef `XPUI_PAGE_CHECK_InstFiles`
+    !insertmacro XPUI_PAGE_INSTFILES
+    !else ifdef `XPUI_PAGE_CHECK_InstSuccess`
+    !insertmacro XPUI_PAGE_INSTSUCCESS
+    !else ifdef `XPUI_PAGE_CHECK_Finish`
+    !insertmacro XPUI_PAGE_FINISH
+    !else ifdef `XPUI_PAGE_CHECK_Abort`
+    !insertmacro XPUI_PAGE_ABORT
+    !else
+    !verbose 4
+    !define temp.TEXT {Page}
+    !error "ExperienceUI: FATAL: Improper use of $${temp.TEXT} command.$\nUsage: $${temp.TEXT} (Welcome|Welcome2|Components|Directory|InstConfirm|InstFiles|Finish|InstSuccess|Abort)$\nNOTE: License and StartMenu pages must be inserted the old way."
+    !endif
+  !undef  `XPUI_PAGE_CHECK_${pname}`
+!macroend
+
+!macro XPUI_UNPAGE pname
+  !insertmacro XPUI_PAGEMODE_PUSH
+  !insertmacro XPUI_PAGEMODE_UNINST
+  !define `XPUI_PAGE_CHECK_${pname}`
+    !ifdef `XPUI_PAGE_CHECK_Welcome`
+    !insertmacro XPUI_PAGE_WELCOME
+    !else ifdef `XPUI_PAGE_CHECK_Welcome2`
+    !insertmacro XPUI_PAGE_WELCOME2
+    !else ifdef `XPUI_PAGE_CHECK_Components`
+    !insertmacro XPUI_PAGE_COMPONENTS
+    !else ifdef `XPUI_PAGE_CHECK_Directory`
+    !insertmacro XPUI_PAGE_DIRECTORY
+    !else ifdef `XPUI_PAGE_CHECK_InstConfirm`
+    !insertmacro XPUI_PAGE_INSTCONFIRM
+    !else ifdef `XPUI_PAGE_CHECK_InstFiles`
+    !insertmacro XPUI_PAGE_INSTFILES
+    !else ifdef `XPUI_PAGE_CHECK_InstSuccess`
+    !insertmacro XPUI_PAGE_INSTSUCCESS
+    !else ifdef `XPUI_PAGE_CHECK_Finish`
+    !insertmacro XPUI_PAGE_FINISH
+    !else ifdef `XPUI_PAGE_CHECK_Abort`
+    !insertmacro XPUI_PAGE_ABORT
+    !else ifdef `XPUI_PAGE_CHECK_UnConfirm`
+    !insertmacro XPUI_PAGE_UNINSTCONFIRM_NSIS
+    !else
+    !verbose 4
+    !define temp.TEXT {UnPage}
+    !error "ExperienceUI: FATAL: Improper use of $${temp.TEXT} command.$\nUsage: $${temp.TEXT} (Welcome|Welcome2|Components|Directory|InstConfirm|InstFiles|Finish|InstSuccess|Abort)$\nNOTE: License and StartMenu pages must be inserted the old way."
+    !endif
+  !undef  `XPUI_PAGE_CHECK_${pname}`
+  !insertmacro XPUI_PAGEMODE_POP
+!macroend
+
+!define Page "!insertmacro XPUI_PAGE"
+!define UnPage "!insertmacro XPUI_UNPAGE"
+!define StartMenuPage "!insertmacro XPUI_PAGE_STARTMENU"
+!define LicensePage "!insertmacro XPUI_PAGE_LICENSE"
+
+; SECTION DESCRIPTION CODE
+; WRITTEN BY JOOST VERBURG
+
+!macro XPUI_DESCRIPTION_BEGIN
+FindWindow $XPUI_TEMP1 `#32770` `` $HWNDPARENT
+GetDlgItem $XPUI_TEMP1 $XPUI_TEMP1 1043
+StrCmp $0 -1 0 XPUI.description_begin_done
+SendMessage $XPUI_TEMP1 0xC 0 `STR:$XPUI_HWND`
+EnableWindow $XPUI_TEMP1 0
+
+Goto XPUI.description_done
+XPUI.description_begin_done:
+!macroend
+
+!macro XPUI_DESCRIPTION_TEXT VAR TEXT
+!verbose push
+  !verbose 4
+  !ifndef XPUI_SILENT
+    !echo `XPUI Section Description Text: Section ${VAR}, Text "${TEXT}"`
+  !endif
+  !verbose ${XPUI_VERBOSE}
+StrCmp $0 ${VAR} 0 XPUI.description_${VAR}_done
+SendMessage $XPUI_TEMP1 0xC 0 `STR:`
+EnableWindow $XPUI_TEMP1 1
+SendMessage $XPUI_TEMP1 0xC 0 `STR:${TEXT}`
+Goto XPUI.description_done
+XPUI.description_${VAR}_done:
+!verbose pop
+!macroend
+
+!macro XPUI_DESCRIPTION_END
+XPUI.description_done:
+!macroend
+
+
+!macro XPUI_FUNCTION_DESCRIPTION_BEGIN
+!verbose push
+  !verbose 4
+  !ifndef XPUI_SILENT
+    !echo `!insertmacro: XPUI_FUNCTION_DESCRIPTION_BEGIN (Start Description Function)`
+  !endif
+  !verbose ${XPUI_VERBOSE}
+Function .onMouseOverSection
+FindWindow $XPUI_TEMP1 `#32770` `` $HWNDPARENT
+GetDlgItem $XPUI_TEMP1 $XPUI_TEMP1 1042
+SendMessage $XPUI_TEMP1 0xC 0 `STR:$XPUI_TEMP2`
+!insertmacro XPUI_DESCRIPTION_BEGIN
+!verbose pop
+!macroend
+
+!macro XPUI_FUNCTION_DESCRIPTION_END
+!verbose push
+  !verbose 4
+  !ifndef XPUI_SILENT
+    !echo `!insertmacro: XPUI_FUNCTION_DESCRIPTION_END (End Description Function)`
+  !endif
+  !verbose ${XPUI_VERBOSE}
+!insertmacro XPUI_DESCRIPTION_END
+FunctionEnd
+!verbose pop
+!macroend
+
+; END SECTION DESCRIPTION CODE
+
+; Macros - Left Info Panel
+!macro XPUI_LEFT_SETTIME M
+
+  Push $XPUI_TEMP1
+  
+    !ifndef XPUI_BGIMAGE
+    SetBrandingImage /IMGID=1302 "$PLUGINSDIR\LeftImg.bmp"
+    !else
+    SetBrandingImage /IMGID=1099 "$PLUGINSDIR\BgImage.bmp"
+    !endif
+  
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1100
+    ShowWindow $XPUI_TEMP1 0
+    SendMessage $XPUI_TEMP1 0xC 0 "STR:Setup will complete in approximately:"
+    ShowWindow $XPUI_TEMP1 5
+    
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1101
+    ShowWindow $XPUI_TEMP1 0
+    SendMessage $XPUI_TEMP1 0xC 0 "STR:${M}"
+    ShowWindow $XPUI_TEMP1 5
+    
+  Pop $XPUI_TEMP1
+
+!macroend
+
+!macro XPUI_LEFT_STATUS T B
+
+  Push $XPUI_TEMP1
+  
+    !ifndef XPUI_BGIMAGE
+    SetBrandingImage /IMGID=1302 "$PLUGINSDIR\LeftImg.bmp"
+    !else
+    SetBrandingImage /IMGID=1099 "$PLUGINSDIR\BgImage.bmp"
+    !endif
+    
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1100
+    ShowWindow $XPUI_TEMP1 0
+    SendMessage $XPUI_TEMP1 0xC 0 "STR:${T}"
+    ShowWindow $XPUI_TEMP1 5
+
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1101
+    ShowWindow $XPUI_TEMP1 0
+    SendMessage $XPUI_TEMP1 0xC 0 "STR:${B}"
+    ShowWindow $XPUI_TEMP1 5
+    
+  Pop $XPUI_TEMP1
+
+!macroend
+
+!macro XPUI_LEFT_BLANK
+
+  Push $XPUI_TEMP1
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1100
+    ShowWindow $XPUI_TEMP1 0
+
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1101
+    ShowWindow $XPUI_TEMP1 0
+  Pop $XPUI_TEMP1
+
+!macroend
+
+!macro XPUI_LEFT_MESSAGE T M B
+
+  !define XPUI_LMB_CHECK_${B}
+  
+  !ifdef XPUI_LMB_CHECK_1 | XPUI_LMB_CHECK_2 | XPUI_LMB_CHECK_3
+  !else
+    !error "XPUI_LEFT_MESSAGE: Syntax error$\nUsage: !insertmacro XPUI_LEFT_MESSAGE message_title message_text type(1|2|3)$\nType: 1 - OK button, 2 - OK and cancel buttons, 3 - Yes and No buttons"
+  !endif
+  
+  !ifdef XPUI_BGIMAGE
+    !insertmacro XPUI_DEFAULT XPUI_LMB_TRANSPARENT ""
+  !endif
+  
+  StrCmp $XPUI_ABORTED 1 0 +2
+    Abort
+  
+  !ifndef XPUI_LMB_TRANSPARENT
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1302
+    ShowWindow $XPUI_TEMP1 0
+  !endif
+  
+  SetOutPath $PLUGINSDIR
+  File "${XPUI_SYSDIR}\INI\MBSide.ini"
+  
+  InstallOptions::initDialog /NOUNLOAD $PLUGINSDIR\MBSide.ini
+
+    Pop $XPUI_HWND
+    
+    !ifdef XPUI_LMB_TRANSPARENT
+      !insertmacro XPUI_CONTROL_SKIN_TRANS $XPUI_HWND
+    !else
+      !insertmacro XPUI_CONTROL_SKIN $XPUI_HWND
+    !endif
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1203
+    !insertmacro XPUI_CONTROL_SKIN_LIGHT_TRANS $XPUI_TEMP1
+    CreateFont $XPUI_TEMP2 "Arial" 8 700
+    SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+    SendMessage $XPUI_TEMP1 0xC 0 `STR:${T}`
+    
+    GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1204
+    !insertmacro XPUI_CONTROL_SKIN_TRANS $XPUI_TEMP1
+    CreateFont $XPUI_TEMP2 "Arial" 8 350
+    SendMessage $XPUI_TEMP1 0x30 $XPUI_TEMP2 0
+    SendMessage $XPUI_TEMP1 0xC 0 `STR:${M}`
+    
+    ; Buttons
+    !ifdef XPUI_LMB_CHECK_1
+
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1200
+      ShowWindow $XPUI_TEMP1 5
+      SendMessage $XPUI_TEMP1 0xC 0 STR:OK
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1201
+      ShowWindow $XPUI_TEMP1 0
+      
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1202
+      ShowWindow $XPUI_TEMP1 0
+      
+    !else ifdef XPUI_LMB_CHECK_2
+
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1200
+      ShowWindow $XPUI_TEMP1 0
+
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1201
+      ShowWindow $XPUI_TEMP1 5
+      SendMessage $XPUI_TEMP1 0xC 0 STR:OK
+
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1202
+      ShowWindow $XPUI_TEMP1 5
+      SendMessage $XPUI_TEMP1 0xC 0 STR:Cancel
+
+    !else ifdef XPUI_LMB_CHECK_3
+
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1200
+      ShowWindow $XPUI_TEMP1 0
+
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1201
+      ShowWindow $XPUI_TEMP1 5
+      SendMessage $XPUI_TEMP1 0xC 0 STR:Yes
+
+      GetDlgItem $XPUI_TEMP1 $XPUI_HWND 1202
+      ShowWindow $XPUI_TEMP1 5
+      SendMessage $XPUI_TEMP1 0xC 0 STR:No
+
+    !endif
+    
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1
+    ShowWindow $XPUI_TEMP1 0
+    
+    LockWindow off
+    
+  InstallOptions::show
+  
+  !ifndef XPUI_LMB_TRANSPARENT
+    GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1302
+    ShowWindow $XPUI_TEMP1 5
+  !endif
+  GetDlgItem $XPUI_TEMP1 $HWNDPARENT 1
+  ShowWindow $XPUI_TEMP1 5
+  
+  ReadINIStr $XPUI_TEMP2 $PLUGINSDIR\MBSide.ini Settings State
+  
+  !undef XPUI_LMB_CHECK_${B}
+
+!macroend
+
+; This include is the entire multi-language system.  Without it, you're lost.  This is
+; really the only part from the old code that was completely spared.
+!include "${XPUI_SYSDIR}\Lang.nsh"
+!define Language "!insertmacro XPUI_LANGUAGE"
+!define LangDialog "!insertmacro XPUI_LANGDLL_DISPLAY"
+!define LangPage "!insertmacro XPUI_LANGPAGE_DISPLAY"
+
+!insertmacro XPUI_PAGEMODE_INST
+
+; Skin Includes
+  !ifdef XPUI_SKIN
+    !ifndef XPUI_SKIN_INCLUDED
+    !define XPUI_SKIN_INCLUDED
+    !verbose push
+    !verbose 3 ; Allow errors to be exposed
+    !include "${XPUI_SYSDIR}\Skins\${XPUI_SKIN}.xpuiskin"
+    !verbose pop
+    !endif
+  !endif
+
+!ifdef XPUI_FASTERSKINNING
+  !insertmacro XPUI_DEFAULT XPUI_INTERNAL_INTERFACE_INSERTED ""
+  !insertmacro XPUI_INTERFACE
+!endif
+
+!verbose 4
+!ifndef XPUI_SILENT
+!echo `XPUI Processing Complete.$\n$\n`
+!endif ;XPUI_SILENT
+!verbose pop
+!endif ;XPUI_INCLUDED