123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- ; GetWindowsVersion 4.1 (2014-10-01)
- ;
- ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
- ; Update by Joost Verburg
- ; Update (Macro, Define, Windows 7 detection) - John T. Haller of PortableApps.com - 2008-01-07
- ; Update (Windows 8 detection) - Marek Mizanin (Zanir) - 2013-02-07
- ; Update (Windows 8.1 detection) - John T. Haller of PortableApps.com - 2014-04-04
- ; Update (Windows 10 TP detection) - John T. Haller of PortableApps.com - 2014-10-01
- ; Got from http://nsis.sourceforge.net/Get_Windows_version
- ;
- ; Usage: ${GetWindowsVersion} $R0
- ;
- ; $R0 contains: 95, 98, ME, NT x.x, 2000, XP, 2003, Vista, 7, 8, 8.1, 10.0 or '' (for unknown)
- Function GetWindowsVersion
- Push $R0
- Push $R1
- ClearErrors
- ReadRegStr $R0 HKLM \
- "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
- IfErrors 0 lbl_winnt
- ; we are not NT
- ReadRegStr $R0 HKLM \
- "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
- StrCpy $R1 $R0 1
- StrCmp $R1 '4' 0 lbl_error
- StrCpy $R1 $R0 3
- StrCmp $R1 '4.0' lbl_win32_95
- StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
- lbl_win32_95:
- StrCpy $R0 '95'
- Goto lbl_done
- lbl_win32_98:
- StrCpy $R0 '98'
- Goto lbl_done
- lbl_win32_ME:
- StrCpy $R0 'ME'
- Goto lbl_done
- lbl_winnt:
- StrCpy $R1 $R0 1
- StrCmp $R1 '3' lbl_winnt_x
- StrCmp $R1 '4' lbl_winnt_x
- StrCpy $R1 $R0 3
- StrCmp $R1 '5.0' lbl_winnt_2000
- StrCmp $R1 '5.1' lbl_winnt_XP
- StrCmp $R1 '5.2' lbl_winnt_2003
- StrCmp $R1 '6.0' lbl_winnt_vista
- StrCmp $R1 '6.1' lbl_winnt_7
- StrCmp $R1 '6.2' lbl_winnt_8
- StrCmp $R1 '6.3' lbl_winnt_81
- StrCmp $R1 '6.4' lbl_winnt_10 lbl_error
- lbl_winnt_x:
- StrCpy $R0 "NT $R0" 6
- Goto lbl_done
- lbl_winnt_2000:
- Strcpy $R0 '2000'
- Goto lbl_done
- lbl_winnt_XP:
- Strcpy $R0 'XP'
- Goto lbl_done
- lbl_winnt_2003:
- Strcpy $R0 '2003'
- Goto lbl_done
- lbl_winnt_vista:
- Strcpy $R0 'Vista'
- Goto lbl_done
- lbl_winnt_7:
- Strcpy $R0 '7'
- Goto lbl_done
- lbl_winnt_8:
- Strcpy $R0 '8'
- Goto lbl_done
- lbl_winnt_81:
- Strcpy $R0 '8.1'
- Goto lbl_done
- lbl_winnt_10:
- Strcpy $R0 '10.0'
- Goto lbl_done
- lbl_error:
- Strcpy $R0 ''
- lbl_done:
- Pop $R1
- Exch $R0
- FunctionEnd
- !macro GetWindowsVersion OUTPUT_VALUE
- Call GetWindowsVersion
- Pop `${OUTPUT_VALUE}`
- !macroend
- !define GetWindowsVersion '!insertmacro "GetWindowsVersion"'
|