본문 바로가기

NSIS/Reference

[NSIS] Internet Explorer 버전 얻는 함수

반응형
# 호출 예
# ${GetIEVersion} '반환'
# ${GetIEVersion} $0
!macro _GetIEVersion un
	Function ${un}_GetIEVersion
		Push $R0
		Push $R1
		ClearErrors
		ReadRegStr $R1 HKLM "Software\Microsoft\Internet Explorer" "svcVersion" # IE 10, 11
		IfErrors FAIL_GET_svcVersion SUCCESS_GET_svcVersion
		SUCCESS_GET_svcVersion:
			${IndexOf} $R0 "." $R1
			StrCpy $R1 $R1 $R0
			Goto lbl_done
		FAIL_GET_svcVersion:
		ReadRegStr $R1 HKLM "Software\Microsoft\Internet Explorer" "Version" # IE 9 이하
		IfErrors lbl_123 lbl_456
		lbl_456: # ie 4+
			${IndexOf} $R0 "." $R1
			StrCpy $R1 $R1 $R0
			Goto lbl_done
		lbl_123: # older ie version
			ClearErrors
			ReadRegStr $R1 HKLM "Software\Microsoft\Internet Explorer" "IVer"
			IfErrors lbl_error
			StrCpy $R1 $R1 3
			StrCmp $R1 '100' lbl_ie1
			StrCmp $R1 '101' lbl_ie2
			StrCmp $R1 '102' lbl_ie2
			StrCpy $R1 '3' # default to ie3 if not 100, 101, or 102.
			Goto lbl_done
		lbl_ie1:
			StrCpy $R1 '1'
			Goto lbl_done
		lbl_ie2:
			StrCpy $R1 '2'
			Goto lbl_done
		lbl_error:
			StrCpy $R1 ''
		lbl_done:
		Push $R1
		Exch
		Pop $R1
		Exch
		Pop $R0
	FunctionEnd
!macroend
!insertmacro _GetIEVersion ""
!insertmacro _GetIEVersion "un."
!macro GetIEVersion OUTPUT
	!ifndef __UNINSTALL__
		Call _GetIEVersion
	!else
		Call un._GetIEVersion
	!endif
	Pop "${OUTPUT}"
!macroend
!define GetIEVersion "!insertmacro GetIEVersion"
반응형