Fix svn properties where needed:
[metze/wireshark/wip.git] / packaging / nsis / GetWindowsVersion.nsh
1
2 ; GetWindowsVersion
3 ;
4 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
5 ; Updated by Joost Verburg
6 ;
7 ; Returns on top of stack
8 ;
9 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
10 ; or
11 ; '' (Unknown Windows Version)
12 ;
13 ; Usage:
14 ;   Call GetWindowsVersion
15 ;   Pop $R0
16 ;   ; at this point $R0 is "NT 4.0" or whatnot
17
18 Function 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 lbl_error
66
67   lbl_winnt_x:
68     StrCpy $R0 "NT $R0" 6
69   Goto lbl_done
70
71   lbl_winnt_2000:
72     Strcpy $R0 '2000'
73   Goto lbl_done
74
75   lbl_winnt_XP:
76     Strcpy $R0 'XP'
77   Goto lbl_done
78
79   lbl_winnt_2003:
80     Strcpy $R0 '2003'
81   Goto lbl_done
82
83   lbl_error:
84     Strcpy $R0 ''
85   lbl_done:
86
87   Pop $R1
88   Exch $R0
89
90 FunctionEnd