diff -r 000000000000 -r d5ce4c64ef88 Contrib/ExperienceUI/XPUI.nsh --- /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