9d8a5e23def1746004eb6891cd5bb8fc36823fb3
[obnox/wireshark/wip.git] / packaging / nsis / GetWindowsVersion.nsh
1 \r
2 ; GetWindowsVersion\r
3 ;\r
4 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/\r
5 ; Updated by Joost Verburg\r
6 ;\r
7 ; Returns on top of stack\r
8 ;\r
9 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)\r
10 ; or\r
11 ; '' (Unknown Windows Version)\r
12 ;\r
13 ; Usage:\r
14 ;   Call GetWindowsVersion\r
15 ;   Pop $R0\r
16 ;   ; at this point $R0 is "NT 4.0" or whatnot\r
17 \r
18 Function GetWindowsVersion\r
19 \r
20   Push $R0\r
21   Push $R1\r
22 \r
23   ClearErrors\r
24 \r
25   ReadRegStr $R0 HKLM \\r
26   "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion\r
27 \r
28   IfErrors 0 lbl_winnt\r
29   \r
30   ; we are not NT\r
31   ReadRegStr $R0 HKLM \\r
32   "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber\r
33 \r
34   StrCpy $R1 $R0 1\r
35   StrCmp $R1 '4' 0 lbl_error\r
36 \r
37   StrCpy $R1 $R0 3\r
38 \r
39   StrCmp $R1 '4.0' lbl_win32_95\r
40   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98\r
41 \r
42   lbl_win32_95:\r
43     StrCpy $R0 '95'\r
44   Goto lbl_done\r
45 \r
46   lbl_win32_98:\r
47     StrCpy $R0 '98'\r
48   Goto lbl_done\r
49 \r
50   lbl_win32_ME:\r
51     StrCpy $R0 'ME'\r
52   Goto lbl_done\r
53 \r
54   lbl_winnt:\r
55 \r
56   StrCpy $R1 $R0 1\r
57 \r
58   StrCmp $R1 '3' lbl_winnt_x\r
59   StrCmp $R1 '4' lbl_winnt_x\r
60 \r
61   StrCpy $R1 $R0 3\r
62 \r
63   StrCmp $R1 '5.0' lbl_winnt_2000\r
64   StrCmp $R1 '5.1' lbl_winnt_XP\r
65   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error\r
66 \r
67   lbl_winnt_x:\r
68     StrCpy $R0 "NT $R0" 6\r
69   Goto lbl_done\r
70 \r
71   lbl_winnt_2000:\r
72     Strcpy $R0 '2000'\r
73   Goto lbl_done\r
74 \r
75   lbl_winnt_XP:\r
76     Strcpy $R0 'XP'\r
77   Goto lbl_done\r
78 \r
79   lbl_winnt_2003:\r
80     Strcpy $R0 '2003'\r
81   Goto lbl_done\r
82 \r
83   lbl_error:\r
84     Strcpy $R0 ''\r
85   lbl_done:\r
86 \r
87   Pop $R1\r
88   Exch $R0\r
89 \r
90 FunctionEnd\r