[31634] | 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
|
---|
| 18 | Function ${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
|
---|
[38751] | 67 | StrCmp $R1 '6.1' lbl_winnt_7
|
---|
[46838] | 68 | StrCmp $R1 '6.2' lbl_winnt_8
|
---|
[54006] | 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 |
|
---|
[53008] | 77 | StrCmp $R1 '6.3' lbl_winnt_8_1
|
---|
| 78 | StrCmp $R1 '6.4' lbl_winnt_10 lbl_error
|
---|
[31634] | 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 |
|
---|
[38751] | 104 | lbl_winnt_8:
|
---|
| 105 | Strcpy $R0 '8'
|
---|
| 106 | Goto lbl_done
|
---|
| 107 |
|
---|
[46838] | 108 | lbl_winnt_8_1: ; Also includes Windows Server 2012 R2
|
---|
| 109 | Strcpy $R0 '8_1'
|
---|
| 110 | Goto lbl_done
|
---|
| 111 |
|
---|
[53008] | 112 | lbl_winnt_10:
|
---|
| 113 | Strcpy $R0 '10'
|
---|
| 114 | Goto lbl_done
|
---|
| 115 |
|
---|
[31634] | 116 | lbl_error:
|
---|
| 117 | Strcpy $R0 ''
|
---|
| 118 | lbl_done:
|
---|
| 119 |
|
---|
| 120 | Pop $R1
|
---|
| 121 | Exch $R0
|
---|
| 122 |
|
---|
| 123 | FunctionEnd
|
---|
| 124 | !macroend
|
---|
| 125 | !insertmacro GetWindowsVersion ""
|
---|
| 126 | !insertmacro GetWindowsVersion "un."
|
---|