winver.nsh revision 168f0d5dcd9366f5e1c22fcc49f8dc5a20d4686e
040b4a09341f574825386333398110f4db3e1e51vboxsync; GetWindowsVersion
040b4a09341f574825386333398110f4db3e1e51vboxsync;
040b4a09341f574825386333398110f4db3e1e51vboxsync; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
040b4a09341f574825386333398110f4db3e1e51vboxsync; Updated by Joost Verburg
040b4a09341f574825386333398110f4db3e1e51vboxsync;
040b4a09341f574825386333398110f4db3e1e51vboxsync; Returns on top of stack
040b4a09341f574825386333398110f4db3e1e51vboxsync;
040b4a09341f574825386333398110f4db3e1e51vboxsync; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, Vista)
040b4a09341f574825386333398110f4db3e1e51vboxsync; or
040b4a09341f574825386333398110f4db3e1e51vboxsync; '' (Unknown Windows Version)
040b4a09341f574825386333398110f4db3e1e51vboxsync;
040b4a09341f574825386333398110f4db3e1e51vboxsync; Usage:
040b4a09341f574825386333398110f4db3e1e51vboxsync; Call GetWindowsVersion
040b4a09341f574825386333398110f4db3e1e51vboxsync; Pop $R0
040b4a09341f574825386333398110f4db3e1e51vboxsync; ; at this point $R0 is "NT 4.0" or whatnot
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync!macro GetWindowsVersion un
040b4a09341f574825386333398110f4db3e1e51vboxsyncFunction ${un}GetWindowsVersion
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync Push $R0
040b4a09341f574825386333398110f4db3e1e51vboxsync Push $R1
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync ClearErrors
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync ReadRegStr $R0 HKLM \
040b4a09341f574825386333398110f4db3e1e51vboxsync "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync IfErrors 0 lbl_winnt
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync ; we are not NT
040b4a09341f574825386333398110f4db3e1e51vboxsync ReadRegStr $R0 HKLM \
040b4a09341f574825386333398110f4db3e1e51vboxsync "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync StrCpy $R1 $R0 1
040b4a09341f574825386333398110f4db3e1e51vboxsync StrCmp $R1 '4' 0 lbl_error
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync StrCpy $R1 $R0 3
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync StrCmp $R1 '4.0' lbl_win32_95
040b4a09341f574825386333398110f4db3e1e51vboxsync StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
040b4a09341f574825386333398110f4db3e1e51vboxsync
040b4a09341f574825386333398110f4db3e1e51vboxsync lbl_win32_95:
040b4a09341f574825386333398110f4db3e1e51vboxsync StrCpy $R0 '95'
040b4a09341f574825386333398110f4db3e1e51vboxsync Goto lbl_done
040b4a09341f574825386333398110f4db3e1e51vboxsync
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_8_1 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_8_1: ; Also includes Windows Server 2012 R2
Strcpy $R0 '8_1'
Goto lbl_done
lbl_error:
Strcpy $R0 ''
lbl_done:
Pop $R1
Exch $R0
FunctionEnd
!macroend
!insertmacro GetWindowsVersion ""
!insertmacro GetWindowsVersion "un."