mirror of
				https://github.com/chibicitiberiu/rainmeter-studio.git
				synced 2024-02-24 04:33:31 +00:00 
			
		
		
		
	Completed rename from RainmeterEditor to RainmeterStudio
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/Header.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/Header.bmp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/Icon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/Icon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										959
									
								
								Build/Installer/Installer.nsi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										959
									
								
								Build/Installer/Installer.nsi
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,959 @@
 | 
			
		||||
/*
 | 
			
		||||
  Copyright (C) 2012 Birunthan Mohanathas
 | 
			
		||||
 | 
			
		||||
  This program is free software; you can redistribute it and/or
 | 
			
		||||
  modify it under the terms of the GNU General Public License
 | 
			
		||||
  as published by the Free Software Foundation; either version 2
 | 
			
		||||
  of the License, or (at your option) any later version.
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
  GNU General Public License for more details.
 | 
			
		||||
 | 
			
		||||
  You should have received a copy of the GNU General Public License
 | 
			
		||||
  along with this program; if not, write to the Free Software
 | 
			
		||||
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
!verbose 3
 | 
			
		||||
!addplugindir ".\"
 | 
			
		||||
!include "MUI2.nsh"
 | 
			
		||||
!include "x64.nsh"
 | 
			
		||||
!include "FileFunc.nsh"
 | 
			
		||||
!include "WordFunc.nsh"
 | 
			
		||||
!include "WinVer.nsh"
 | 
			
		||||
!include "UAC.nsh"
 | 
			
		||||
 | 
			
		||||
!ifndef OUTFILE
 | 
			
		||||
 !define OUTFILE "Rainmeter-test.exe"
 | 
			
		||||
 !define VERSION_FULL "0.0.0.0"
 | 
			
		||||
 !define VERSION_SHORT "0.0"
 | 
			
		||||
 !define VERSION_REVISION "000"
 | 
			
		||||
!else
 | 
			
		||||
 !define INCLUDEFILES
 | 
			
		||||
!endif
 | 
			
		||||
 | 
			
		||||
Name "Rainmeter"
 | 
			
		||||
VIAddVersionKey "ProductName" "Rainmeter"
 | 
			
		||||
VIAddVersionKey "FileDescription" "Rainmeter Installer"
 | 
			
		||||
VIAddVersionKey "FileVersion" "${VERSION_FULL}"
 | 
			
		||||
VIAddVersionKey "ProductVersion" "${VERSION_FULL}"
 | 
			
		||||
VIAddVersionKey "OriginalFilename" "${OUTFILE}"
 | 
			
		||||
VIAddVersionKey "LegalCopyright" "Copyright (C) 2009-2013 - All authors"
 | 
			
		||||
VIProductVersion "${VERSION_FULL}"
 | 
			
		||||
BrandingText " "
 | 
			
		||||
SetCompressor /SOLID lzma
 | 
			
		||||
RequestExecutionLevel user
 | 
			
		||||
InstallDirRegKey HKLM "SOFTWARE\Rainmeter" ""
 | 
			
		||||
ShowInstDetails nevershow
 | 
			
		||||
AllowSkipFiles off
 | 
			
		||||
XPStyle on
 | 
			
		||||
OutFile "..\${OUTFILE}"
 | 
			
		||||
ReserveFile "${NSISDIR}\Plugins\LangDLL.dll"
 | 
			
		||||
ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll"
 | 
			
		||||
ReserveFile "${NSISDIR}\Plugins\System.dll"
 | 
			
		||||
ReserveFile ".\UAC.dll"
 | 
			
		||||
 | 
			
		||||
!define REQUIREDSPACE 5 ; Minimum required space for install (in MB)
 | 
			
		||||
 | 
			
		||||
; Error levels (for silent install)
 | 
			
		||||
!define ERROR_UNSUPPORTED	3
 | 
			
		||||
!define ERROR_NOTADMIN		4
 | 
			
		||||
!define ERROR_WRITEFAIL		5
 | 
			
		||||
!define ERROR_NOVCREDIST	6
 | 
			
		||||
!define ERROR_CLOSEFAIL		7
 | 
			
		||||
 | 
			
		||||
; Additional Windows definitions
 | 
			
		||||
!define BCM_SETSHIELD 0x0000160c
 | 
			
		||||
!define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
 | 
			
		||||
!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
 | 
			
		||||
 | 
			
		||||
!define MUI_ICON ".\Icon.ico"
 | 
			
		||||
!define MUI_UNICON ".\Icon.ico"
 | 
			
		||||
!define MUI_WELCOMEFINISHPAGE_BITMAP ".\Wizard.bmp"
 | 
			
		||||
!define MUI_FINISHPAGE_RUN
 | 
			
		||||
!define MUI_FINISHPAGE_RUN_FUNCTION FinishRun
 | 
			
		||||
!define MUI_WELCOMEPAGE ; For language strings
 | 
			
		||||
 | 
			
		||||
Page custom PageWelcome PageWelcomeOnLeave
 | 
			
		||||
Page custom PageOptions PageOptionsOnLeave
 | 
			
		||||
!insertmacro MUI_PAGE_INSTFILES
 | 
			
		||||
!insertmacro MUI_PAGE_FINISH
 | 
			
		||||
 | 
			
		||||
UninstPage custom un.PageOptions un.GetOptions
 | 
			
		||||
!insertmacro MUI_UNPAGE_INSTFILES
 | 
			
		||||
 | 
			
		||||
; Include languages
 | 
			
		||||
!macro IncludeLanguage LANGUAGE CUSTOMLANGUAGE
 | 
			
		||||
	!insertmacro MUI_LANGUAGE ${LANGUAGE}
 | 
			
		||||
	!insertmacro LANGFILE_INCLUDE "..\..\Language\${CUSTOMLANGUAGE}.nsh"
 | 
			
		||||
!macroend
 | 
			
		||||
!define IncludeLanguage "!insertmacro IncludeLanguage"
 | 
			
		||||
!include "Languages.nsh"
 | 
			
		||||
 | 
			
		||||
Var NonDefaultLanguage
 | 
			
		||||
Var AutoStartup
 | 
			
		||||
Var Install64Bit
 | 
			
		||||
Var InstallPortable
 | 
			
		||||
Var un.DeleteAll
 | 
			
		||||
 | 
			
		||||
; Install
 | 
			
		||||
; --------------------------------------
 | 
			
		||||
Function .onInit
 | 
			
		||||
	${If} ${RunningX64}
 | 
			
		||||
		${EnableX64FSRedirection}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${IfNot} ${UAC_IsInnerInstance}
 | 
			
		||||
		${If} ${IsWin2000}
 | 
			
		||||
		${OrIf} ${IsWinXP}
 | 
			
		||||
		${AndIf} ${AtMostServicePack} 2
 | 
			
		||||
		${OrIf} ${IsWin2003}
 | 
			
		||||
		${AndIf} ${AtMostServicePack} 0
 | 
			
		||||
			${IfNot} ${Silent}
 | 
			
		||||
				MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires Windows XP SP3 or later."
 | 
			
		||||
			${EndIf}
 | 
			
		||||
			SetErrorLevel ${ERROR_UNSUPPORTED}
 | 
			
		||||
			Quit
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		System::Call 'kernel32::IsProcessorFeaturePresent(i${PF_XMMI_INSTRUCTIONS_AVAILABLE})i.r0'
 | 
			
		||||
		${If} $0 = 0
 | 
			
		||||
			${IfNot} ${Silent}
 | 
			
		||||
				MessageBox MB_OK|MB_ICONSTOP "Rainmeter requires a Pentium III or later processor."
 | 
			
		||||
			${EndIf}
 | 
			
		||||
			SetErrorLevel ${ERROR_UNSUPPORTED}
 | 
			
		||||
			Quit
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language"
 | 
			
		||||
		ReadRegDWORD $NonDefaultLanguage HKLM "SOFTWARE\Rainmeter" "NonDefault"
 | 
			
		||||
 | 
			
		||||
		${IfNot} ${Silent}
 | 
			
		||||
			${If} $0 == ""
 | 
			
		||||
			${OrIf} $0 <> $LANGUAGE
 | 
			
		||||
			${AndIf} $NonDefaultLanguage != 1
 | 
			
		||||
				; New install or better match
 | 
			
		||||
				LangDLL::LangDialog "$(^SetupCaption)" "Please select the installer language.$\n$(SELECTLANGUAGE)" AC ${LANGDLL_PARAMS} ""
 | 
			
		||||
				Pop $0
 | 
			
		||||
				${If} $0 == "cancel"
 | 
			
		||||
					Abort
 | 
			
		||||
				${EndIf}
 | 
			
		||||
 | 
			
		||||
				${If} $0 <> $LANGUAGE
 | 
			
		||||
					; User selected non-default language
 | 
			
		||||
					StrCpy $NonDefaultLanguage 1
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			StrCpy $LANGUAGE $0
 | 
			
		||||
		${Else}
 | 
			
		||||
			${If} $0 != ""
 | 
			
		||||
				StrCpy $LANGUAGE $0
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetParameters} $R1
 | 
			
		||||
 | 
			
		||||
			ClearErrors
 | 
			
		||||
			${GetOptions} $R1 "/LANGUAGE=" $0
 | 
			
		||||
			${IfNot} ${Errors}
 | 
			
		||||
				${If} $LANGUAGE != $0
 | 
			
		||||
					StrCpy $NonDefaultLanguage 1
 | 
			
		||||
				${EndIf}
 | 
			
		||||
 | 
			
		||||
				StrCpy $LANGUAGE $0
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetOptions} $R1 "/STARTUP=" $0
 | 
			
		||||
			${If} $0 = 1
 | 
			
		||||
				StrCpy $AutoStartup 1
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetOptions} $R1 "/PORTABLE=" $0
 | 
			
		||||
			${If} $0 = 1
 | 
			
		||||
				StrCpy $InstallPortable 1
 | 
			
		||||
			${Else}
 | 
			
		||||
				${IfNot} ${UAC_IsAdmin}
 | 
			
		||||
					SetErrorLevel ${ERROR_NOTADMIN}
 | 
			
		||||
					Quit
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${GetOptions} $R1 "/VERSION=" $0
 | 
			
		||||
			${If} $0 = 64
 | 
			
		||||
				StrCpy $Install64Bit 1
 | 
			
		||||
 | 
			
		||||
				${If} $INSTDIR == ""
 | 
			
		||||
					StrCpy $INSTDIR "$PROGRAMFILES64\Rainmeter"
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${Else}
 | 
			
		||||
				${If} $INSTDIR == ""
 | 
			
		||||
					StrCpy $INSTDIR "$PROGRAMFILES\Rainmeter"
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			ClearErrors
 | 
			
		||||
			CreateDirectory "$INSTDIR"
 | 
			
		||||
			WriteINIStr "$INSTDIR\writetest~.rm" "1" "1" "1"
 | 
			
		||||
			Delete "$INSTDIR\writetest~.rm"
 | 
			
		||||
 | 
			
		||||
			${If} ${Errors}
 | 
			
		||||
				RMDir "$INSTDIR"
 | 
			
		||||
				SetErrorLevel ${ERROR_WRITEFAIL}
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		; If the language was set to a non-existent language, reset it back to English.
 | 
			
		||||
		${WordFind} ",${LANGUAGE_IDS}" ",$LANGUAGE," "E+1{" $0
 | 
			
		||||
		${If} ${Errors}
 | 
			
		||||
			StrCpy $LANGUAGE "1033"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${Else}
 | 
			
		||||
		; Exchange settings with user instance
 | 
			
		||||
		!insertmacro UAC_AsUser_Call Function ExchangeSettings ${UAC_SYNCREGISTERS}
 | 
			
		||||
		StrCpy $AutoStartup $1
 | 
			
		||||
		StrCpy $Install64Bit $2
 | 
			
		||||
		StrCpy $NonDefaultLanguage $3
 | 
			
		||||
		StrCpy $LANGUAGE $4
 | 
			
		||||
		StrCpy $INSTDIR $5
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function ExchangeSettings
 | 
			
		||||
	StrCpy $1 $AutoStartup
 | 
			
		||||
	StrCpy $2 $Install64Bit
 | 
			
		||||
	StrCpy $3 $NonDefaultLanguage
 | 
			
		||||
	StrCpy $4 $LANGUAGE
 | 
			
		||||
	StrCpy $5 $INSTDIR
 | 
			
		||||
	HideWindow
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageWelcome
 | 
			
		||||
	${If} ${UAC_IsInnerInstance}
 | 
			
		||||
		${If} ${UAC_IsAdmin}
 | 
			
		||||
			; Skip page
 | 
			
		||||
			Abort
 | 
			
		||||
		${Else}
 | 
			
		||||
			MessageBox MB_OK|MB_ICONSTOP "$(ADMINERROR) (Inner)"
 | 
			
		||||
			Quit
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	!insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(^ComponentsSubText1)"
 | 
			
		||||
	nsDialogs::Create 1044
 | 
			
		||||
	Pop $0
 | 
			
		||||
	nsDialogs::SetRTL $(^RTL)
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateBitmap} 0u 0u 109u 193u ""
 | 
			
		||||
	Pop $0
 | 
			
		||||
	${NSD_SetImage} $0 "$PLUGINSDIR\modern-wizard.bmp" $R0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 120u 10u 195u 38u "$(MUI_TEXT_WELCOME_INFO_TITLE)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
	CreateFont $1 "$(^Font)" "12" "700"
 | 
			
		||||
	SendMessage $0 ${WM_SETFONT} $1 0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 120u 55u 195u 12u "$(^ComponentsSubText1)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateRadioButton} 120u 70u 205u 12u "$(STANDARDINST)"
 | 
			
		||||
	Pop $R1
 | 
			
		||||
	SetCtlColors $R1 "" "${MUI_BGCOLOR}"
 | 
			
		||||
	${NSD_AddStyle} $R1 ${WS_GROUP}
 | 
			
		||||
	SendMessage $R1 ${WM_SETFONT} $mui.Header.Text.Font 0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 132u 82u 185u 24u "$(STANDARDINSTDESC)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateRadioButton} 120u 106u 310u 12u "$(PORTABLEINST)"
 | 
			
		||||
	Pop $R2
 | 
			
		||||
	SetCtlColors $R2 "" "${MUI_BGCOLOR}"
 | 
			
		||||
	${NSD_AddStyle} $R2 ${WS_TABSTOP}
 | 
			
		||||
	SendMessage $R2 ${WM_SETFONT} $mui.Header.Text.Font 0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 132u 118u 185u 52u "$(PORTABLEINSTDESC)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	SetCtlColors $0 "" "${MUI_BGCOLOR}"
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		${NSD_Check} $R2
 | 
			
		||||
	${Else}
 | 
			
		||||
		${NSD_Check} $R1
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	Call muiPageLoadFullWindow
 | 
			
		||||
 | 
			
		||||
	nsDialogs::Show
 | 
			
		||||
	${NSD_FreeImage} $R0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageWelcomeOnLeave
 | 
			
		||||
	${NSD_GetState} $R2 $InstallPortable
 | 
			
		||||
	Call muiPageUnloadFullWindow
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptions
 | 
			
		||||
	${If} ${UAC_IsInnerInstance}
 | 
			
		||||
	${AndIf} ${UAC_IsAdmin}
 | 
			
		||||
		; Skip page
 | 
			
		||||
		Abort
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	!insertmacro MUI_HEADER_TEXT "$(INSTALLOPTIONS)" "$(INSTALLOPTIONSDESC)"
 | 
			
		||||
	nsDialogs::Create 1018
 | 
			
		||||
	nsDialogs::SetRTL $(^RTL)
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateGroupBox} 0 0u -1u 36u "$(^DirSubText)"
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateDirRequest} 6u 14u 232u 14u ""
 | 
			
		||||
	Pop $R0
 | 
			
		||||
	${NSD_OnChange} $R0 PageOptionsDirectoryOnChange
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateBrowseButton} 242u 14u 50u 14u "$(^BrowseBtn)"
 | 
			
		||||
	Pop $R1
 | 
			
		||||
	${NSD_OnClick} $R1 PageOptionsBrowseOnClick
 | 
			
		||||
 | 
			
		||||
	StrCpy $1 0
 | 
			
		||||
 | 
			
		||||
	StrCpy $R2 0
 | 
			
		||||
	${If} ${RunningX64}
 | 
			
		||||
		${If} $InstallPortable = 1
 | 
			
		||||
		${OrIf} $INSTDIR == ""
 | 
			
		||||
			${NSD_CreateCheckBox} 6u 54u 285u 12u "$(INSTALL64BIT)"
 | 
			
		||||
			Pop $R2
 | 
			
		||||
			StrCpy $1 30u
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		${If} $1 = 0
 | 
			
		||||
			StrCpy $0 54u
 | 
			
		||||
			StrCpy $1 30u
 | 
			
		||||
		${Else}
 | 
			
		||||
			StrCpy $0 66u
 | 
			
		||||
			StrCpy $1 42u
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		${NSD_CreateCheckbox} 6u $0 285u 12u "$(AUTOSTARTUP)"
 | 
			
		||||
		Pop $R3
 | 
			
		||||
 | 
			
		||||
		${If} $INSTDIR == ""
 | 
			
		||||
			${NSD_Check} $R3
 | 
			
		||||
		${Else}
 | 
			
		||||
			SetShellVarContext all
 | 
			
		||||
			${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
				${NSD_Check} $R3
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			SetShellVarContext current
 | 
			
		||||
			${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
				${NSD_Check} $R3
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${Else}
 | 
			
		||||
		StrCpy $R3 0
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $1 <> 0
 | 
			
		||||
		${NSD_CreateGroupBox} 0 42u -1u $1 "$(ADDITIONALOPTIONS)"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	; Set default directory
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		${GetRoot} "$WINDIR" $0
 | 
			
		||||
		${NSD_SetText} $R0 "$0\Rainmeter"
 | 
			
		||||
	${Else}
 | 
			
		||||
		; Disable Directory editbox and Browse button if already installed
 | 
			
		||||
		SendMessage $R0 ${EM_SETREADONLY} 1 0
 | 
			
		||||
 | 
			
		||||
		${If} $INSTDIR != ""
 | 
			
		||||
			EnableWindow $R1 0
 | 
			
		||||
			${NSD_SetText} $R0 "$INSTDIR"
 | 
			
		||||
		${Else}
 | 
			
		||||
			; Fresh install
 | 
			
		||||
			${If} ${RunningX64}
 | 
			
		||||
				${NSD_SetText} $R0 "$PROGRAMFILES64\Rainmeter"
 | 
			
		||||
				${NSD_Check} $R2
 | 
			
		||||
			${Else}
 | 
			
		||||
				${NSD_SetText} $R0 "$PROGRAMFILES\Rainmeter"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	; Show UAC shield on Install button if requiredd
 | 
			
		||||
	GetDlgItem $0 $HWNDPARENT 1
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		SendMessage $0 ${BCM_SETSHIELD} 0 0
 | 
			
		||||
	${Else}
 | 
			
		||||
		SendMessage $0 ${BCM_SETSHIELD} 0 1
 | 
			
		||||
 | 
			
		||||
		; Hide Back button
 | 
			
		||||
		GetDlgItem $0 $HWNDPARENT 3
 | 
			
		||||
		ShowWindow $0 ${SW_HIDE}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	nsDialogs::Show
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptionsDirectoryOnChange
 | 
			
		||||
	${NSD_GetText} $R0 $0
 | 
			
		||||
 | 
			
		||||
	; Disable Install button if not enough space
 | 
			
		||||
	GetDlgItem $1 $HWNDPARENT 1
 | 
			
		||||
	${GetRoot} $0 $2
 | 
			
		||||
	${DriveSpace} "$2\" "/D=F /S=M" $3
 | 
			
		||||
	${If} $3 < ${REQUIREDSPACE}
 | 
			
		||||
		EnableWindow $1 0
 | 
			
		||||
	${Else}
 | 
			
		||||
		EnableWindow $1 1
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	StrCpy $Install64Bit 0
 | 
			
		||||
	${If} ${RunningX64}
 | 
			
		||||
		${If} ${FileExists} "$0\Rainmeter.exe"
 | 
			
		||||
			MoreInfo::GetProductVersion "$0\Rainmeter.exe"
 | 
			
		||||
			Pop $0
 | 
			
		||||
			StrCpy $0 $0 2 -7
 | 
			
		||||
			${If} $0 == 64
 | 
			
		||||
				StrCpy $Install64Bit 1
 | 
			
		||||
			${EndIf}
 | 
			
		||||
 | 
			
		||||
			${If} $R2 != 0
 | 
			
		||||
				${NSD_SetState} $R2 $Install64Bit
 | 
			
		||||
				EnableWindow $R2 0
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${Else}
 | 
			
		||||
			${If} $R2 != 0
 | 
			
		||||
				EnableWindow $R2 1
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptionsBrowseOnClick
 | 
			
		||||
	${NSD_GetText} $R0 $0
 | 
			
		||||
	nsDialogs::SelectFolderDialog "$(^DirBrowseText)" $0
 | 
			
		||||
	Pop $1
 | 
			
		||||
	${If} $1 != error
 | 
			
		||||
		${NSD_SetText} $R0 $1
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function PageOptionsOnLeave
 | 
			
		||||
	; Verify that selected folder is writable
 | 
			
		||||
	${NSD_GetText} $R0 $0
 | 
			
		||||
	${If} $InstallPortable = 1
 | 
			
		||||
		ClearErrors
 | 
			
		||||
		CreateDirectory "$0"
 | 
			
		||||
		WriteINIStr "$0\writetest~.rm" "1" "1" "1"
 | 
			
		||||
		Delete "$0\writetest~.rm"
 | 
			
		||||
 | 
			
		||||
		${If} ${Errors}
 | 
			
		||||
			RMDir "$0"
 | 
			
		||||
			MessageBox MB_OK|MB_ICONEXCLAMATION "$(WRITEERROR)"
 | 
			
		||||
			Abort
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		RMDir "$0"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	StrCpy $INSTDIR $0
 | 
			
		||||
 | 
			
		||||
	GetDlgItem $0 $HWNDPARENT 1
 | 
			
		||||
	EnableWindow $0 0
 | 
			
		||||
 | 
			
		||||
	${If} $R2 != 0
 | 
			
		||||
		${NSD_GetState} $R2 $Install64Bit
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $R3 != 0
 | 
			
		||||
		${NSD_GetState} $R3 $AutoStartup
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		${IfNot} ${UAC_IsAdmin}
 | 
			
		||||
			; UAC_IsAdmin seems to return incorrect result sometimes. Recheck with UserInfo::GetAccountType to be sure.
 | 
			
		||||
			UserInfo::GetAccountType
 | 
			
		||||
			Pop $0
 | 
			
		||||
			${If} $0 != "Admin"
 | 
			
		||||
UAC_TryAgain:
 | 
			
		||||
				!insertmacro UAC_RunElevated
 | 
			
		||||
				${Switch} $0
 | 
			
		||||
				${Case} 0
 | 
			
		||||
					${IfThen} $1 = 1 ${|} Quit ${|}
 | 
			
		||||
					${IfThen} $3 <> 0 ${|} ${Break} ${|}
 | 
			
		||||
					${If} $1 = 3
 | 
			
		||||
						MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0
 | 
			
		||||
					${EndIf}
 | 
			
		||||
				${Case} 1223
 | 
			
		||||
					Quit
 | 
			
		||||
				${Case} 1062
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)"
 | 
			
		||||
					Quit
 | 
			
		||||
				${Default}
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)"
 | 
			
		||||
					Quit
 | 
			
		||||
				${EndSwitch}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
!macro InstallFiles DIR ARCH
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
	File "..\..\${DIR}-Release\Rainmeter.exe"
 | 
			
		||||
	File "..\..\${DIR}-Release\Rainmeter.dll"
 | 
			
		||||
	File "..\..\${DIR}-Release\SkinInstaller.exe"
 | 
			
		||||
	File "..\..\${DIR}-Release\SkinInstaller.dll"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Plugins"
 | 
			
		||||
	File /x *Example*.dll "..\..\${DIR}-Release\Plugins\*.dll"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Runtime"
 | 
			
		||||
	File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcp120.dll"
 | 
			
		||||
	File "$%VS120COMNTOOLS%..\..\VC\redist\${ARCH}\Microsoft.VC120.CRT\msvcr120.dll"
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro RemoveStartMenuShortcuts STARTMENUPATH
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainmeter.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainmeter Help.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainmeter Help.URL"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Remove Rainmeter.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainThemes.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainThemes Help.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainBrowser.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\RainBackup.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainstaller.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Skin Installer.lnk"
 | 
			
		||||
	Delete "${STARTMENUPATH}\Rainstaller Help.lnk"
 | 
			
		||||
	RMDir "${STARTMENUPATH}"
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
Section
 | 
			
		||||
	SetOutPath "$PLUGINSDIR"
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
 | 
			
		||||
	Var /GLOBAL InstArc
 | 
			
		||||
	${If} $Install64Bit = 1
 | 
			
		||||
		StrCpy $InstArc "x64"
 | 
			
		||||
	${Else}
 | 
			
		||||
		StrCpy $InstArc "x86"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
	${AndIfNot} ${AtLeastWinVista}
 | 
			
		||||
		; Download and install .NET if required
 | 
			
		||||
		ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"
 | 
			
		||||
		${If} $0 <> 1
 | 
			
		||||
			${If} $Install64Bit <> 1
 | 
			
		||||
				NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe" "$PLUGINSDIR\dotnetfx.exe"
 | 
			
		||||
			${Else}
 | 
			
		||||
				NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe" "$PLUGINSDIR\dotnetfx.exe"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
			Pop $0
 | 
			
		||||
 | 
			
		||||
			${If} $0 == "success"
 | 
			
		||||
				ExecWait '"$PLUGINSDIR\dotnetfx.exe" /q:a /c:"install /q"' $0
 | 
			
		||||
				Delete "$PLUGINSDIR\dotnetfx.exe"
 | 
			
		||||
 | 
			
		||||
				${If} $0 = 3010
 | 
			
		||||
					SetRebootFlag true
 | 
			
		||||
				${ElseIf} $0 <> 0
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)"
 | 
			
		||||
					Quit
 | 
			
		||||
				${EndIf}
 | 
			
		||||
			${ElseIf} $0 == "cancel"
 | 
			
		||||
				Quit
 | 
			
		||||
			${Else}
 | 
			
		||||
				MessageBox MB_OK|MB_ICONSTOP "$(DOTNETINSTERROR)"
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	; Close Rainmeter (and wait up to five seconds)
 | 
			
		||||
	${ForEach} $0 10 0 - 1
 | 
			
		||||
		FindWindow $1 "DummyRainWClass" "Rainmeter control window"
 | 
			
		||||
		ClearErrors
 | 
			
		||||
		Delete "$INSTDIR\Rainmeter.exe"
 | 
			
		||||
		${If} $1 = 0
 | 
			
		||||
		${AndIfNot} ${Errors}
 | 
			
		||||
			${Break}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		SendMessage $1 ${WM_CLOSE} 0 0
 | 
			
		||||
 | 
			
		||||
		${If} $0 = 0
 | 
			
		||||
			${If} ${Silent}
 | 
			
		||||
				SetErrorLevel ${ERROR_CLOSEFAIL}
 | 
			
		||||
				Quit
 | 
			
		||||
			${Else}
 | 
			
		||||
				MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		Sleep 500
 | 
			
		||||
	${Next}
 | 
			
		||||
 | 
			
		||||
	; Move Rainmeter.ini to %APPDATA% if needed
 | 
			
		||||
	${IfNot} ${Silent}
 | 
			
		||||
	${AndIf} ${FileExists} "$INSTDIR\Rainmeter.ini"
 | 
			
		||||
		${If} $InstallPortable <> 1
 | 
			
		||||
			${If} $Install64Bit = 1
 | 
			
		||||
			${AndIf} "$INSTDIR" == "$PROGRAMFILES64\Rainmeter"
 | 
			
		||||
			${OrIf} "$INSTDIR" == "$PROGRAMFILES\Rainmeter"
 | 
			
		||||
				MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(SETTINGSFILEERROR)" IDNO SkipIniMove
 | 
			
		||||
				StrCpy $0 1
 | 
			
		||||
				!insertmacro UAC_AsUser_Call Function CopyIniToAppData ${UAC_SYNCREGISTERS}
 | 
			
		||||
				${If} $0 = 1
 | 
			
		||||
					; Copy succeeded
 | 
			
		||||
					Delete "$INSTDIR\Rainmeter.ini"
 | 
			
		||||
				${Else}
 | 
			
		||||
					MessageBox MB_OK|MB_ICONSTOP "$(SETTINGSMOVEERROR)"
 | 
			
		||||
				${EndIf}
 | 
			
		||||
SkipIniMove:
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${Else}
 | 
			
		||||
			ReadINIStr $0 "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath"
 | 
			
		||||
			${If} $0 == "$INSTDIR\Skins\"
 | 
			
		||||
				DeleteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "SkinPath"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	; Cleanup old stuff
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.chm"
 | 
			
		||||
	Delete "$INSTDIR\Default.ini"
 | 
			
		||||
	Delete "$INSTDIR\Launcher.exe"
 | 
			
		||||
	Delete "$INSTDIR\Defaults\Plugins\FileView.dll"
 | 
			
		||||
	RMDir /r "$INSTDIR\Addons\Rainstaller"
 | 
			
		||||
	RMDir /r "$INSTDIR\Addons\RainBackup"
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		CreateDirectory "$INSTDIR\Defaults"
 | 
			
		||||
		Rename "$INSTDIR\Skins" "$INSTDIR\Defaults\Skins"
 | 
			
		||||
 | 
			
		||||
		Rename "$INSTDIR\Themes" "$INSTDIR\Defaults\Layouts"
 | 
			
		||||
		Rename "$INSTDIR\Defaults\Themes" "$INSTDIR\Defaults\Layouts"
 | 
			
		||||
		${Locate} "$INSTDIR\Defaults\Layouts" "/L=F /M=Rainmeter.thm /G=1" "RenameToRainmeterIni"
 | 
			
		||||
 | 
			
		||||
		${If} ${FileExists} "$INSTDIR\Addons\Backup"
 | 
			
		||||
		${OrIf} ${FileExists} "$INSTDIR\Plugins\Backup"
 | 
			
		||||
			CreateDirectory "$INSTDIR\Defaults\Backup"
 | 
			
		||||
			Rename "$INSTDIR\Addons\Backup" "$INSTDIR\Defaults\Backup\Addons"
 | 
			
		||||
			Rename "$INSTDIR\Plugins\Backup" "$INSTDIR\Defaults\Backup\Plugins"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		Rename "$INSTDIR\Addons" "$INSTDIR\Defaults\Addons"
 | 
			
		||||
		${Locate} "$INSTDIR\Plugins" "/L=F /M=*.dll /G=0" "MoveNonDefaultPlugins"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
!ifdef INCLUDEFILES
 | 
			
		||||
	File "..\..\Application\Rainmeter.exe.config"
 | 
			
		||||
 | 
			
		||||
	${If} $instArc == "x86"
 | 
			
		||||
		!insertmacro InstallFiles "x32" "x86"
 | 
			
		||||
	${Else}
 | 
			
		||||
		!insertmacro InstallFiles "x64" "x64"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	RMDir /r "$INSTDIR\Languages"
 | 
			
		||||
	SetOutPath "$INSTDIR\Languages"
 | 
			
		||||
	File "..\..\x32-Release\Languages\*.*"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Defaults\Skins"
 | 
			
		||||
	RMDir /r "$INSTDIR\Skins\illustro"
 | 
			
		||||
	Delete "$INSTDIR\Skins\*.txt"
 | 
			
		||||
	File /r "..\Skins\*.*"
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR\Defaults\Layouts"
 | 
			
		||||
	File /r "..\Layouts\*.*"
 | 
			
		||||
!endif
 | 
			
		||||
 | 
			
		||||
	SetOutPath "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	${If} $InstallPortable <> 1
 | 
			
		||||
		ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" ""
 | 
			
		||||
		WriteRegStr HKLM "SOFTWARE\Rainmeter" "" "$INSTDIR"
 | 
			
		||||
		WriteRegStr HKLM "SOFTWARE\Rainmeter" "Language" "$LANGUAGE"
 | 
			
		||||
		WriteRegDWORD HKLM "SOFTWARE\Rainmeter" "NonDefault" $NonDefaultLanguage
 | 
			
		||||
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayName" "Rainmeter"
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayIcon" "$INSTDIR\Rainmeter.exe,0"
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "URLInfoAbout" "http://rainmeter.net"
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "UninstallString" "$INSTDIR\uninst.exe"
 | 
			
		||||
 | 
			
		||||
!ifdef BETA
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} beta r${VERSION_REVISION}"
 | 
			
		||||
!else
 | 
			
		||||
		WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter" "DisplayVersion" "${VERSION_SHORT} r${VERSION_REVISION}"
 | 
			
		||||
!endif
 | 
			
		||||
 | 
			
		||||
		; Create .rmskin association
 | 
			
		||||
		WriteRegStr HKCR ".rmskin" "" "Rainmeter.SkinInstaller"
 | 
			
		||||
		DeleteRegKey HKCR "Rainmeter skin"	; Old key
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller" "" "Rainmeter Skin Installer"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell" "" "open"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\DefaultIcon" "" "$INSTDIR\SkinInstaller.exe,0"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\open\command" "" '"$INSTDIR\SkinInstaller.exe" %1'
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit" "" "Install Rainmeter skin"
 | 
			
		||||
		WriteRegStr HKCR "Rainmeter.SkinInstaller\shell\edit\command" "" '"$INSTDIR\SkinInstaller.exe" %1'
 | 
			
		||||
 | 
			
		||||
		; If .inc isn't associated, use the .ini association for it.
 | 
			
		||||
		ReadRegStr $1 HKCR ".inc" ""
 | 
			
		||||
		${If} $1 == ""
 | 
			
		||||
			ReadRegStr $1 HKCR ".ini" ""
 | 
			
		||||
			${If} $1 != ""
 | 
			
		||||
				WriteRegStr HKCR ".inc" "" "$1"
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		; Refresh shell icons if new install
 | 
			
		||||
		${If} $0 == ""
 | 
			
		||||
			${RefreshShellIcons}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		; Remove all start menu shortcuts
 | 
			
		||||
		SetShellVarContext all
 | 
			
		||||
		Call RemoveStartMenuShortcuts
 | 
			
		||||
 | 
			
		||||
		StrCpy $0 "$SMPROGRAMS\Rainmeter.lnk"
 | 
			
		||||
		${If} ${FileExists} "$SMPROGRAMS\Rainmeter"
 | 
			
		||||
			StrCpy $0 "$SMPROGRAMS\Rainmeter\Rainmeter.lnk"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
		CreateShortcut "$0" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0
 | 
			
		||||
 | 
			
		||||
		${If} $AutoStartup = 1
 | 
			
		||||
			${If} ${FileExists} "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
				; Remove user shortcut to prevent duplicate with all users shortcut
 | 
			
		||||
				!insertmacro UAC_AsUser_Call Function RemoveUserStartupShortcut ${UAC_SYNCREGISTERS}
 | 
			
		||||
			${Else}
 | 
			
		||||
				!insertmacro UAC_AsUser_Call Function CreateUserStartupShortcut ${UAC_SYNCREGISTERS}
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		SetShellVarContext current
 | 
			
		||||
		Call RemoveStartMenuShortcuts
 | 
			
		||||
 | 
			
		||||
		!insertmacro UAC_AsUser_Call Function RemoveStartMenuShortcuts ${UAC_SYNCREGISTERS}
 | 
			
		||||
 | 
			
		||||
		WriteUninstaller "$INSTDIR\uninst.exe"
 | 
			
		||||
	${Else}
 | 
			
		||||
		${IfNot} ${FileExists} "Rainmeter.ini"
 | 
			
		||||
			CopyFiles /SILENT "$INSTDIR\Defaults\Layouts\illustro default\Rainmeter.ini" "$INSTDIR\Rainmeter.ini"
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		WriteINIStr "$INSTDIR\Rainmeter.ini" "Rainmeter" "Language" "$LANGUAGE"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
SectionEnd
 | 
			
		||||
 | 
			
		||||
Function CopyIniToAppData
 | 
			
		||||
	ClearErrors
 | 
			
		||||
	CreateDirectory "$APPDATA\Rainmeter"
 | 
			
		||||
	CopyFiles /SILENT "$INSTDIR\Rainmeter.ini" "$APPDATA\Rainmeter\Rainmeter.ini"
 | 
			
		||||
	${If} ${Errors}
 | 
			
		||||
		StrCpy $0 0
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function RenameToRainmeterIni
 | 
			
		||||
	${If} ${FileExists} "$R8\Rainmeter.ini"
 | 
			
		||||
		Delete "$R8\Rainmeter.thm"
 | 
			
		||||
	${Else}
 | 
			
		||||
		Rename "$R9" "$R8\Rainmeter.ini"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	Push $0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function MoveNonDefaultPlugins
 | 
			
		||||
	${If} $R7 != "AdvancedCPU.dll"
 | 
			
		||||
	${AndIf} $R7 != "CoreTemp.dll"
 | 
			
		||||
	${AndIf} $R7 != "FileView.dll"
 | 
			
		||||
	${AndIf} $R7 != "FolderInfo.dll"
 | 
			
		||||
	${AndIf} $R7 != "InputText.dll"
 | 
			
		||||
	${AndIf} $R7 != "iTunesPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "MediaKey.dll"
 | 
			
		||||
	${AndIf} $R7 != "NowPlaying.dll"
 | 
			
		||||
	${AndIf} $R7 != "PerfMon.dll"
 | 
			
		||||
	${AndIf} $R7 != "PingPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "PowerPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "Process.dll"
 | 
			
		||||
	${AndIf} $R7 != "QuotePlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "RecycleManager.dll"
 | 
			
		||||
	${AndIf} $R7 != "ResMon.dll"
 | 
			
		||||
	${AndIf} $R7 != "SpeedFanPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "SysInfo.dll"
 | 
			
		||||
	${AndIf} $R7 != "VirtualDesktops.dll"
 | 
			
		||||
	${AndIf} $R7 != "WebParser.dll"
 | 
			
		||||
	${AndIf} $R7 != "WifiStatus.dll"
 | 
			
		||||
	${AndIf} $R7 != "Win7AudioPlugin.dll"
 | 
			
		||||
	${AndIf} $R7 != "WindowMessagePlugin.dll"
 | 
			
		||||
		CreateDirectory "$INSTDIR\Defaults\Plugins"
 | 
			
		||||
		Delete "$INSTDIR\Defaults\Plugins\$R7"
 | 
			
		||||
		Rename "$R9" "$INSTDIR\Defaults\Plugins\$R7"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	Push $0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function RemoveStartMenuShortcuts
 | 
			
		||||
	!insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter"
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function CreateUserStartupShortcut
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
	CreateShortcut "$SMSTARTUP\Rainmeter.lnk" "$INSTDIR\Rainmeter.exe" "" "$INSTDIR\Rainmeter.exe" 0
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function RemoveUserStartupShortcut
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
	Delete "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function FinishRun
 | 
			
		||||
	!insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\Rainmeter.exe" "" "" ""
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
; Uninstall
 | 
			
		||||
; --------------------------------------
 | 
			
		||||
Function un.onInit
 | 
			
		||||
UAC_TryAgain:
 | 
			
		||||
	; Request administrative rights
 | 
			
		||||
	!insertmacro UAC_RunElevated
 | 
			
		||||
	${Switch} $0
 | 
			
		||||
	${Case} 0
 | 
			
		||||
		${IfThen} $1 = 1 ${|} Quit ${|}
 | 
			
		||||
		${IfThen} $3 <> 0 ${|} ${Break} ${|}
 | 
			
		||||
		${If} $1 = 3
 | 
			
		||||
			MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(ADMINERROR)" /SD IDNO IDOK UAC_TryAgain IDNO 0
 | 
			
		||||
		${EndIf}
 | 
			
		||||
	${Case} 1223
 | 
			
		||||
		Quit
 | 
			
		||||
	${Case} 1062
 | 
			
		||||
		MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(LOGONERROR)"
 | 
			
		||||
		Quit
 | 
			
		||||
	${Default}
 | 
			
		||||
		MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST|MB_SETFOREGROUND "$(UACERROR) ($0)"
 | 
			
		||||
		Quit
 | 
			
		||||
	${EndSwitch}
 | 
			
		||||
 | 
			
		||||
	ReadRegStr $0 HKLM "SOFTWARE\Rainmeter" "Language"
 | 
			
		||||
	${If} $0 != ""
 | 
			
		||||
		StrCpy $LANGUAGE $0
 | 
			
		||||
	${EndIf}
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function un.PageOptions
 | 
			
		||||
	!insertmacro MUI_HEADER_TEXT "$(UNSTALLOPTIONS)" "$(UNSTALLOPTIONSDESC)"
 | 
			
		||||
	nsDialogs::Create 1018
 | 
			
		||||
	nsDialogs::SetRTL $(^RTL)
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateCheckbox} 0 0u 95% 12u "$(UNSTALLRAINMETER)"
 | 
			
		||||
	Pop $0
 | 
			
		||||
	EnableWindow $0 0
 | 
			
		||||
	${NSD_Check} $0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateCheckbox} 0 15u 70% 12u "$(UNSTALLSETTINGS)"
 | 
			
		||||
	Pop $R0
 | 
			
		||||
 | 
			
		||||
	${NSD_CreateLabel} 16 26u 95% 12u "$(UNSTALLSETTINGSDESC)"
 | 
			
		||||
 | 
			
		||||
	nsDialogs::Show
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Function un.GetOptions
 | 
			
		||||
	${NSD_GetState} $R0 $un.DeleteAll
 | 
			
		||||
FunctionEnd
 | 
			
		||||
 | 
			
		||||
Section Uninstall
 | 
			
		||||
	; Close Rainmeter (and wait up to five seconds)
 | 
			
		||||
	${ForEach} $0 10 0 - 1
 | 
			
		||||
		FindWindow $1 "DummyRainWClass" "Rainmeter control window"
 | 
			
		||||
		ClearErrors
 | 
			
		||||
		Delete "$INSTDIR\Rainmeter.exe"
 | 
			
		||||
		${If} $1 = 0
 | 
			
		||||
		${AndIfNot} ${Errors}
 | 
			
		||||
			${Break}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		SendMessage $1 ${WM_CLOSE} 0 0
 | 
			
		||||
 | 
			
		||||
		${If} $0 = 0
 | 
			
		||||
			${If} ${Silent}
 | 
			
		||||
				SetErrorLevel ${ERROR_CLOSEFAIL}
 | 
			
		||||
				Quit
 | 
			
		||||
			${Else}
 | 
			
		||||
				MessageBox MB_RETRYCANCEL|MB_ICONSTOP "$(RAINMETERCLOSEERROR)" IDRETRY +2
 | 
			
		||||
				Quit
 | 
			
		||||
			${EndIf}
 | 
			
		||||
		${EndIf}
 | 
			
		||||
 | 
			
		||||
		Sleep 500
 | 
			
		||||
	${Next}
 | 
			
		||||
 | 
			
		||||
	; Old stuff
 | 
			
		||||
	RMDir /r "$INSTDIR\Addons"
 | 
			
		||||
	RMDir /r "$INSTDIR\Fonts"
 | 
			
		||||
 | 
			
		||||
	RMDir /r "$INSTDIR\Defaults"
 | 
			
		||||
	RMDir /r "$INSTDIR\Languages"
 | 
			
		||||
	RMDir /r "$INSTDIR\Plugins"
 | 
			
		||||
	RMDir /r "$INSTDIR\Runtime"
 | 
			
		||||
	RMDir /r "$INSTDIR\Skins"
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.dll"
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.exe"
 | 
			
		||||
	Delete "$INSTDIR\Rainmeter.exe.config"
 | 
			
		||||
	Delete "$INSTDIR\SkinInstaller.exe"
 | 
			
		||||
	Delete "$INSTDIR\SkinInstaller.dll"
 | 
			
		||||
	Delete "$INSTDIR\uninst.exe"
 | 
			
		||||
 | 
			
		||||
	RMDir "$INSTDIR"
 | 
			
		||||
 | 
			
		||||
	SetShellVarContext all
 | 
			
		||||
	RMDir /r "$APPDATA\Rainstaller"
 | 
			
		||||
 | 
			
		||||
	SetShellVarContext current
 | 
			
		||||
	Call un.RemoveShortcuts
 | 
			
		||||
	${If} $un.DeleteAll = 1
 | 
			
		||||
		RMDir /r "$APPDATA\Rainmeter"
 | 
			
		||||
		RMDir /r "$DOCUMENTS\Rainmeter\Skins"
 | 
			
		||||
		RMDir "$DOCUMENTS\Rainmeter"
 | 
			
		||||
		RMDir /r "$1\Rainmeter"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
	
 | 
			
		||||
	!insertmacro UAC_AsUser_Call Function un.RemoveShortcuts ${UAC_SYNCREGISTERS}
 | 
			
		||||
	${If} $un.DeleteAll = 1
 | 
			
		||||
		RMDir /r "$APPDATA\Rainmeter"
 | 
			
		||||
		RMDir /r "$DOCUMENTS\Rainmeter\Skins"
 | 
			
		||||
		RMDir "$DOCUMENTS\Rainmeter"
 | 
			
		||||
	${EndIf}
 | 
			
		||||
 | 
			
		||||
	SetShellVarContext all
 | 
			
		||||
	Call un.RemoveShortcuts
 | 
			
		||||
	Delete "$SMPROGRAMS\Rainmeter.lnk"
 | 
			
		||||
 | 
			
		||||
	DeleteRegKey HKLM "SOFTWARE\Rainmeter"
 | 
			
		||||
	DeleteRegKey HKCR ".rmskin"
 | 
			
		||||
	DeleteRegKey HKCR "Rainmeter.SkinInstaller"
 | 
			
		||||
	DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Rainmeter"
 | 
			
		||||
	${RefreshShellIcons}
 | 
			
		||||
SectionEnd
 | 
			
		||||
 | 
			
		||||
Function un.RemoveShortcuts
 | 
			
		||||
	!insertmacro RemoveStartMenuShortcuts "$SMPROGRAMS\Rainmeter"
 | 
			
		||||
	Delete "$SMSTARTUP\Rainmeter.lnk"
 | 
			
		||||
	Delete "$DESKTOP\Rainmeter.lnk"
 | 
			
		||||
FunctionEnd
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/MD5.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/MD5.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/MoreInfo.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/MoreInfo.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/UAC.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/UAC.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										200
									
								
								Build/Installer/UAC.nsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								Build/Installer/UAC.nsh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,200 @@
 | 
			
		||||
!ifndef UAC_HDR__INC
 | 
			
		||||
!verbose push
 | 
			
		||||
!verbose 3
 | 
			
		||||
!ifndef UAC_VERBOSE  
 | 
			
		||||
	!define UAC_VERBOSE 3
 | 
			
		||||
!endif
 | 
			
		||||
!verbose ${UAC_VERBOSE}
 | 
			
		||||
 | 
			
		||||
!define UAC_HDR__INC 0x00020204 ;MMmmbbrr
 | 
			
		||||
 | 
			
		||||
!include LogicLib.nsh
 | 
			
		||||
 | 
			
		||||
!macro _UAC_definemath def val1 op val2
 | 
			
		||||
!define /math _UAC_definemath "${val1}" ${op} ${val2}
 | 
			
		||||
!ifdef ${def}
 | 
			
		||||
	!undef ${def}
 | 
			
		||||
!endif
 | 
			
		||||
!define ${def} "${_UAC_definemath}"
 | 
			
		||||
!undef _UAC_definemath
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro _UAC_ParseDefineFlags_orin parse outflags
 | 
			
		||||
!searchparse /noerrors ${${parse}} "" _UAC_ParseDefineFlags_orin_f1 "|" _UAC_ParseDefineFlags_orin_f2
 | 
			
		||||
!define _UAC_ParseDefineFlags_orin_this ${_UAC_ParseDefineFlags_orin_f1}
 | 
			
		||||
!undef ${parse}
 | 
			
		||||
!define ${parse} ${_UAC_ParseDefineFlags_orin_f2}
 | 
			
		||||
!define _UAC_ParseDefineFlags_orin_saveout ${${outflags}}
 | 
			
		||||
!undef ${outflags}
 | 
			
		||||
!define /math ${outflags} "${_UAC_ParseDefineFlags_orin_saveout}" | "${_UAC_ParseDefineFlags_orin_this}"
 | 
			
		||||
!undef _UAC_ParseDefineFlags_orin_saveout
 | 
			
		||||
!undef _UAC_ParseDefineFlags_orin_this
 | 
			
		||||
!ifdef _UAC_ParseDefineFlags_orin_f1
 | 
			
		||||
	!undef _UAC_ParseDefineFlags_orin_f1
 | 
			
		||||
	!undef _UAC_ParseDefineFlags_orin_f2
 | 
			
		||||
!endif
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlags_Begin _outdef _in
 | 
			
		||||
!define _UAC_PDF${_outdef}_parse "${_in}"
 | 
			
		||||
!define _UAC_PDF${_outdef}_flags ""
 | 
			
		||||
!define _UAC_PDF${_outdef}_r 0
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x1
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x2
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x4
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x8
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_orin _UAC_PDF${_outdef}_parse _UAC_PDF${_outdef}_flags	;0x10
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlags_End _outdef
 | 
			
		||||
!define ${_outdef} ${_UAC_PDF${_outdef}_r}
 | 
			
		||||
!undef _UAC_PDF${_outdef}_r
 | 
			
		||||
!undef _UAC_PDF${_outdef}_flags
 | 
			
		||||
!undef _UAC_PDF${_outdef}_parse
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlags_IncludeFlag _outdef flag
 | 
			
		||||
!if ${_UAC_PDF${_outdef}_flags} & ${flag}
 | 
			
		||||
	!insertmacro _UAC_definemath _UAC_PDF${_outdef}_r ${_UAC_PDF${_outdef}_r} | ${flag}
 | 
			
		||||
!endif
 | 
			
		||||
!macroend
 | 
			
		||||
!macro _UAC_ParseDefineFlagsToInt _outdef _in
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_Begin _UAC_ParseDefineFlagsToInt_tmp "${_in}"
 | 
			
		||||
!define ${_outdef} ${_UAC_PDF_UAC_ParseDefineFlagsToInt_tmp_flags}
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlags_End _UAC_ParseDefineFlagsToInt_tmp
 | 
			
		||||
!undef _UAC_ParseDefineFlagsToInt_tmp
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro _UAC_IncL
 | 
			
		||||
!insertmacro _UAC_definemath __UAC_L "${__UAC_L}" + 1
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro _UAC_MakeLL_Cmp cmpop cmp pluginparams
 | 
			
		||||
!insertmacro _LOGICLIB_TEMP
 | 
			
		||||
UAC::_ ${pluginparams}
 | 
			
		||||
pop $_LOGICLIB_TEMP
 | 
			
		||||
!insertmacro ${cmpop} $_LOGICLIB_TEMP ${cmp} `${_t}` `${_f}`
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_RunElevated
 | 
			
		||||
UAC::_ 0
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_PageElevation_RunElevated
 | 
			
		||||
UAC::_ 0
 | 
			
		||||
!macroend
 | 
			
		||||
/*!macro UAC_OnInitElevation_RunElevated
 | 
			
		||||
UAC::_ 0
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_OnInitElevation_OnGuiInit
 | 
			
		||||
!macroend*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_IsAdmin
 | 
			
		||||
UAC::_ 2
 | 
			
		||||
!macroend
 | 
			
		||||
!define UAC_IsAdmin `"" UAC_IsAdmin ""`
 | 
			
		||||
!macro _UAC_IsAdmin _a _b _t _f
 | 
			
		||||
!insertmacro _UAC_MakeLL_Cmp _!= 0 2s
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_IsInnerInstance
 | 
			
		||||
UAC::_ 3
 | 
			
		||||
!macroend
 | 
			
		||||
!define UAC_IsInnerInstance `"" UAC_IsInnerInstance ""`
 | 
			
		||||
!macro _UAC_IsInnerInstance _a _b _t _f
 | 
			
		||||
!insertmacro _UAC_MakeLL_Cmp _!= 0 3s
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro UAC_Notify_OnGuiInit
 | 
			
		||||
UAC::_ 4
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_PageElevation_OnGuiInit
 | 
			
		||||
!insertmacro UAC_Notify_OnGuiInit
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_PageElevation_OnInit
 | 
			
		||||
UAC::_ 5
 | 
			
		||||
${IfThen} ${Errors} ${|} Quit ${|}
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!define UAC_SYNCREGISTERS 0x1
 | 
			
		||||
#!define UAC_SYNCSTACK     0x2
 | 
			
		||||
!define UAC_SYNCOUTDIR    0x4
 | 
			
		||||
!define UAC_SYNCINSTDIR   0x8
 | 
			
		||||
#!define UAC_CLEARERRFLAG  0x10
 | 
			
		||||
!macro UAC_AsUser_Call type name flags
 | 
			
		||||
push $0
 | 
			
		||||
Get${type}Address $0 ${name}
 | 
			
		||||
!verbose push
 | 
			
		||||
!verbose ${UAC_VERBOSE}
 | 
			
		||||
!insertmacro _UAC_ParseDefineFlagsToInt _UAC_AsUser_Call__flags ${flags}
 | 
			
		||||
!verbose pop
 | 
			
		||||
StrCpy $0 "1$0:${_UAC_AsUser_Call__flags}"
 | 
			
		||||
!undef _UAC_AsUser_Call__flags
 | 
			
		||||
Exch $0
 | 
			
		||||
UAC::_
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro _UAC_AsUser_GenOp outvar op opparam1 opparam2
 | 
			
		||||
!define _UAC_AUGOGR_ID _UAC_AUGOGR_OP${outvar}${op}${opparam1}${opparam2}
 | 
			
		||||
!ifndef ${_UAC_AUGOGR_ID} ;Has this exact action been done before? 
 | 
			
		||||
	!if ${outvar} == $0
 | 
			
		||||
		!define ${_UAC_AUGOGR_ID} $1
 | 
			
		||||
	!else
 | 
			
		||||
		!define ${_UAC_AUGOGR_ID} $0
 | 
			
		||||
	!endif
 | 
			
		||||
	!if "${opparam1}" == ""
 | 
			
		||||
		!define _UAC_AUGOGR_OPP1 ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
		!define _UAC_AUGOGR_OPP2 ${opparam2}
 | 
			
		||||
	!else
 | 
			
		||||
		!define _UAC_AUGOGR_OPP1 ${opparam1}
 | 
			
		||||
		!define _UAC_AUGOGR_OPP2 ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
	!endif	
 | 
			
		||||
	goto ${_UAC_AUGOGR_ID}_C
 | 
			
		||||
	${_UAC_AUGOGR_ID}_F:
 | 
			
		||||
		${op} ${_UAC_AUGOGR_OPP1} ${_UAC_AUGOGR_OPP2}
 | 
			
		||||
		return
 | 
			
		||||
	${_UAC_AUGOGR_ID}_C:
 | 
			
		||||
	!undef _UAC_AUGOGR_OPP1
 | 
			
		||||
	!undef _UAC_AUGOGR_OPP2
 | 
			
		||||
!endif
 | 
			
		||||
push ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
!insertmacro UAC_AsUser_Call Label ${_UAC_AUGOGR_ID}_F ${UAC_SYNCREGISTERS}
 | 
			
		||||
StrCpy ${outvar} ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
pop ${${_UAC_AUGOGR_ID}}
 | 
			
		||||
!undef _UAC_AUGOGR_ID
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro UAC_AsUser_GetSection datatype secidx outvar
 | 
			
		||||
!insertmacro _UAC_AsUser_GenOp ${outvar} SectionGet${datatype} ${secidx} ""
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!macro UAC_AsUser_GetGlobalVar var
 | 
			
		||||
!insertmacro _UAC_AsUser_GenOp ${var} StrCpy "" ${var}
 | 
			
		||||
!macroend
 | 
			
		||||
!macro UAC_AsUser_GetGlobal outvar srcvar
 | 
			
		||||
!insertmacro _UAC_AsUser_GenOp ${outvar} StrCpy "" ${srcvar}
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!macro UAC_AsUser_ExecShell verb command params workdir show
 | 
			
		||||
!insertmacro _UAC_IncL
 | 
			
		||||
goto _UAC_L_E_${__UAC_L}
 | 
			
		||||
_UAC_L_F_${__UAC_L}:
 | 
			
		||||
ExecShell "${verb}" "${command}" ${params} ${show}
 | 
			
		||||
return
 | 
			
		||||
_UAC_L_E_${__UAC_L}:
 | 
			
		||||
!if "${workdir}" != ""
 | 
			
		||||
	push $outdir
 | 
			
		||||
	SetOutPath "${workdir}"
 | 
			
		||||
!endif
 | 
			
		||||
!insertmacro UAC_AsUser_Call Label _UAC_L_F_${__UAC_L} ${UAC_SYNCREGISTERS}|${UAC_SYNCOUTDIR}|${UAC_SYNCINSTDIR} #|${UAC_CLEARERRFLAG}
 | 
			
		||||
!if "${workdir}" != ""
 | 
			
		||||
	pop $outdir 
 | 
			
		||||
	SetOutPath $outdir
 | 
			
		||||
!endif
 | 
			
		||||
!macroend
 | 
			
		||||
 | 
			
		||||
!verbose pop
 | 
			
		||||
!endif /* UAC_HDR__INC */
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Build/Installer/Wizard.bmp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Build/Installer/Wizard.bmp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 51 KiB  | 
		Reference in New Issue
	
	Block a user