VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Installer/winver.nsh

Last change on this file was 54006, checked in by vboxsync, 9 years ago

Windows additions: OS version check fixes

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.2 KB
Line 
1; GetWindowsVersion
2;
3; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
4; Updated by Joost Verburg
5;
6; Returns on top of stack
7;
8; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003, Vista)
9; or
10; '' (Unknown Windows Version)
11;
12; Usage:
13; Call GetWindowsVersion
14; Pop $R0
15; ; at this point $R0 is "NT 4.0" or whatnot
16
17!macro GetWindowsVersion un
18Function ${un}GetWindowsVersion
19
20 Push $R0
21 Push $R1
22
23 ClearErrors
24
25 ReadRegStr $R0 HKLM \
26 "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
27
28 IfErrors 0 lbl_winnt
29
30 ; we are not NT
31 ReadRegStr $R0 HKLM \
32 "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
33
34 StrCpy $R1 $R0 1
35 StrCmp $R1 '4' 0 lbl_error
36
37 StrCpy $R1 $R0 3
38
39 StrCmp $R1 '4.0' lbl_win32_95
40 StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
41
42 lbl_win32_95:
43 StrCpy $R0 '95'
44 Goto lbl_done
45
46 lbl_win32_98:
47 StrCpy $R0 '98'
48 Goto lbl_done
49
50 lbl_win32_ME:
51 StrCpy $R0 'ME'
52 Goto lbl_done
53
54 lbl_winnt:
55
56 StrCpy $R1 $R0 1
57
58 StrCmp $R1 '3' lbl_winnt_x
59 StrCmp $R1 '4' lbl_winnt_x
60
61 StrCpy $R1 $R0 3
62
63 StrCmp $R1 '5.0' lbl_winnt_2000
64 StrCmp $R1 '5.1' lbl_winnt_XP
65 StrCmp $R1 '5.2' lbl_winnt_2003
66 StrCmp $R1 '6.0' lbl_winnt_vista
67 StrCmp $R1 '6.1' lbl_winnt_7
68 StrCmp $R1 '6.2' lbl_winnt_8
69
70 ; Windows 10 preview 9926 has CurrentVersion == 6.3
71 ; Check Windows 10 registry values
72 ReadRegDWORD $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentMajorVersionNumber"
73 ${If} $R0 == "10"
74 Goto lbl_winnt_10
75 ${EndIf}
76
77 StrCmp $R1 '6.3' lbl_winnt_8_1
78 StrCmp $R1 '6.4' lbl_winnt_10 lbl_error
79
80 lbl_winnt_x:
81 StrCpy $R0 "NT $R0" 6
82 Goto lbl_done
83
84 lbl_winnt_2000:
85 Strcpy $R0 '2000'
86 Goto lbl_done
87
88 lbl_winnt_XP:
89 Strcpy $R0 'XP'
90 Goto lbl_done
91
92 lbl_winnt_2003:
93 Strcpy $R0 '2003'
94 Goto lbl_done
95
96 lbl_winnt_vista:
97 Strcpy $R0 'Vista'
98 Goto lbl_done
99
100 lbl_winnt_7:
101 Strcpy $R0 '7'
102 Goto lbl_done
103
104 lbl_winnt_8:
105 Strcpy $R0 '8'
106 Goto lbl_done
107
108 lbl_winnt_8_1: ; Also includes Windows Server 2012 R2
109 Strcpy $R0 '8_1'
110 Goto lbl_done
111
112 lbl_winnt_10:
113 Strcpy $R0 '10'
114 Goto lbl_done
115
116 lbl_error:
117 Strcpy $R0 ''
118 lbl_done:
119
120 Pop $R1
121 Exch $R0
122
123FunctionEnd
124!macroend
125!insertmacro GetWindowsVersion ""
126!insertmacro GetWindowsVersion "un."
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use