/*਍ഀ ਍ഀ NSIS Modern User Interface਍ഀ Start Menu folder page਍ഀ ਍ഀ */਍ഀ ਍ഀ ;--------------------------------਍ഀ ;Page interface settings and variables਍ഀ ਍ഀ !macro MUI_STARTMENUPAGE_INTERFACE਍ഀ ਍ഀ !ifndef MUI_STARTMENUPAGE_INTERFACE਍ഀ !define MUI_STARTMENUPAGE_INTERFACE਍ഀ Var mui.StartMenuPage਍ഀ Var mui.StartMenuPage.Location਍ഀ Var mui.StartMenuPage.FolderList਍ഀ ਍ഀ Var mui.StartMenuPage.Temp਍ഀ !endif਍ഀ ਍ഀ !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME਍ഀ !ifndef MUI_STARTMENUPAGE_REGISTRY_VARIABLES਍ഀ !define MUI_STARTMENUPAGE_REGISTRY_VARIABLES਍ഀ Var mui.StartMenuPage.RegistryLocation਍ഀ !endif਍ഀ !endif਍ഀ ਍ഀ !macroend਍ഀ ਍ഀ ਍ഀ ;--------------------------------਍ഀ ;Page declaration਍ഀ ਍ഀ !macro MUI_PAGEDECLARATION_STARTMENU ID VAR਍ഀ ਍ഀ !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}STARTMENUPAGE ""਍ഀ !insertmacro MUI_STARTMENUPAGE_INTERFACE ਍ഀ ਍ഀ !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_DEFAULTFOLDER "$(^Name)"਍ഀ !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_TOP "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_TOP)"਍ഀ !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_CHECKBOX "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_CHECKBOX)"਍ഀ ਍ഀ !define MUI_STARTMENUPAGE_VARIABLE "${VAR}"਍ഀ !define "MUI_STARTMENUPAGE_${ID}_VARIABLE" "${MUI_STARTMENUPAGE_VARIABLE}"਍ഀ !define "MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"਍ഀ !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT਍ഀ !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT" "${MUI_STARTMENUPAGE_REGISTRY_ROOT}"਍ഀ !endif਍ഀ !ifdef MUI_STARTMENUPAGE_REGISTRY_KEY਍ഀ !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY" "${MUI_STARTMENUPAGE_REGISTRY_KEY}"਍ഀ !endif਍ഀ !ifdef MUI_STARTMENUPAGE_REGISTRY_VALUENAME਍ഀ !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"਍ഀ !endif਍ഀ ਍ഀ PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom਍ഀ ਍ഀ PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID}਍ഀ ਍ഀ Caption " "਍ഀ ਍ഀ PageExEnd਍ഀ ਍ഀ !insertmacro MUI_FUNCTION_STARTMENUPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID}਍ഀ ਍ഀ !undef MUI_STARTMENUPAGE_VARIABLE਍ഀ !undef MUI_STARTMENUPAGE_TEXT_TOP਍ഀ !undef MUI_STARTMENUPAGE_TEXT_CHECKBOX਍ഀ !undef MUI_STARTMENUPAGE_DEFAULTFOLDER਍ഀ !insertmacro MUI_UNSET MUI_STARTMENUPAGE_NODISABLE਍ഀ !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_ROOT਍ഀ !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_KEY਍ഀ !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_VALUENAME਍ഀ ਍ഀ !macroend਍ഀ ਍ഀ !macro MUI_PAGE_STARTMENU ID VAR਍ഀ ਍ഀ !verbose push਍ഀ !verbose ${MUI_VERBOSE}਍ഀ ਍ഀ !insertmacro MUI_PAGE_INIT਍ഀ !insertmacro MUI_PAGEDECLARATION_STARTMENU "${ID}" "${VAR}"਍ഀ ਍ഀ !verbose pop਍ഀ ਍ഀ !macroend਍ഀ ਍ഀ ;--------------------------------਍ഀ ;Page functions਍ഀ ਍ഀ !macro MUI_FUNCTION_STARTMENUPAGE PRE LEAVE਍ഀ ਍ഀ Function "${PRE}"਍ഀ ਍ഀ !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE਍ഀ ਍ഀ !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME਍ഀ ਍ഀ ;Get Start Menu location from registry਍ഀ ਍ഀ ${if} "${MUI_STARTMENUPAGE_VARIABLE}" == ""਍ഀ ਍ഀ ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"਍ഀ ${if} $mui.StartMenuPage.RegistryLocation != ""਍ഀ StrCpy "${MUI_STARTMENUPAGE_VARIABLE}" $mui.StartMenuPage.RegistryLocation਍ഀ ${endif}਍ഀ ਍ഀ ClearErrors਍ഀ ਍ഀ ${endif}਍ഀ ਍ഀ !endif਍ഀ ਍ഀ !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_TEXT_STARTMENU_TITLE) $(MUI_TEXT_STARTMENU_SUBTITLE)਍ഀ ਍ഀ ${if} $(^RTL) == "0"਍ഀ !ifndef MUI_STARTMENUPAGE_NODISABLE਍ഀ StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"਍ഀ !else਍ഀ StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"਍ഀ !endif਍ഀ ${else}਍ഀ !ifndef MUI_STARTMENUPAGE_NODISABLE਍ഀ StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"਍ഀ !else਍ഀ StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"਍ഀ !endif਍ഀ ${endif}਍ഀ ਍ഀ Pop $mui.StartMenuPage਍ഀ ਍ഀ ;Get control handles਍ഀ GetDlgItem $mui.StartMenuPage.Location $mui.StartMenuPage 1002਍ഀ GetDlgItem $mui.StartMenuPage.FolderList $mui.StartMenuPage 1004਍ഀ ਍ഀ !ifdef MUI_STARTMENUPAGE_BGCOLOR਍ഀ SetCtlColors $mui.StartMenuPage.Location "" "${MUI_STARTMENUPAGE_BGCOLOR}"਍ഀ SetCtlColors $mui.StartMenuMenu.FolderList "" "${MUI_STARTMENUPAGE_BGCOLOR}"਍ഀ !endif਍ഀ ਍ഀ !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW਍ഀ ਍ഀ StartMenu::Show਍ഀ ਍ഀ Pop $mui.StartMenuPage.Temp਍ഀ ${if} $mui.StartMenuPage.Temp == "success"਍ഀ Pop "${MUI_STARTMENUPAGE_VARIABLE}"਍ഀ ${endif}਍ഀ ਍ഀ FunctionEnd਍ഀ ਍ഀ Function "${LEAVE}"਍ഀ ਍ഀ !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE਍ഀ ਍ഀ FunctionEnd਍ഀ ਍ഀ !macroend਍ഀ ਍ഀ ਍ഀ ;--------------------------------਍ഀ ;Script macros to get Start Menu folder਍ഀ ਍ഀ !macro MUI_STARTMENU_GETFOLDER ID VAR਍ഀ ਍ഀ !verbose push਍ഀ !verbose ${MUI_VERBOSE}਍ഀ ਍ഀ ;Get Start Menu folder from registry਍ഀ ;Can be called from the script in the uninstaller਍ഀ ਍ഀ !ifdef MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME਍ഀ ਍ഀ ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME}"਍ഀ ਍ഀ ${if} $mui.StartMenuPage.RegistryLocation != ""਍ഀ StrCpy "${VAR}" $mui.StartMenuPage.RegistryLocation਍ഀ ${else}਍ഀ StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"਍ഀ ${endif}਍ഀ ਍ഀ !else਍ഀ ਍ഀ StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"਍ഀ ਍ഀ !endif਍ഀ ਍ഀ !verbose pop ਍ഀ ਍ഀ !macroend਍ഀ ਍ഀ !macro MUI_STARTMENU_WRITE_BEGIN ID਍ഀ ਍ഀ ;The code in the script to write the shortcuts should be put between the਍ഀ ;MUI_STARTMENU_WRITE_BEGIN and MUI_STARTMENU_WRITE_END macros਍ഀ ਍ഀ !verbose push਍ഀ !verbose ${MUI_VERBOSE}਍ഀ ਍ഀ !define MUI_STARTMENUPAGE_CURRENT_ID "${ID}"਍ഀ ਍ഀ StrCpy $mui.StartMenuPage.Temp "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" 1਍ഀ ਍ഀ ;If the folder start with >, the user has chosen not to create a shortcut਍ഀ ${if} $mui.StartMenuPage.Temp != ">"਍ഀ ਍ഀ ${if} "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" == ""਍ഀ ;Get folder from registry if the variable doesn't contain anything਍ഀ !insertmacro MUI_STARTMENU_GETFOLDER "${MUI_STARTMENUPAGE_CURRENT_ID}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"਍ഀ ${endif}਍ഀ ਍ഀ !verbose pop਍ഀ ਍ഀ !macroend਍ഀ ਍ഀ !macro MUI_STARTMENU_WRITE_END਍ഀ ਍ഀ !verbose push਍ഀ !verbose ${MUI_VERBOSE}਍ഀ ਍ഀ !ifdef MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME਍ഀ ;Write folder to registry਍ഀ WriteRegStr "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"਍ഀ !endif਍ഀ ਍ഀ ${endif}਍ഀ ਍ഀ !undef MUI_STARTMENUPAGE_CURRENT_ID਍ഀ ਍ഀ !verbose pop਍ഀ ਍ഀ !macroend਍ഀ ਍ഀ