Detecting OS
How can in my installer detect which OS it is currently running on. I want it prerticularly for Windows 2000 . Also how can i detect if SP 3 is installed or not.
Archive: Detecting OS
Detecting OS
How can in my installer detect which OS it is currently running on. I want it prerticularly for Windows 2000 . Also how can i detect if SP 3 is installed or not.
there is a plugin here: nsis.sourceforge.net/GetVersion_%28Windows%29_plug-in
or you can use this function
; GetWindowsVersion
;
; Based on Yazno's function, http://yazno.***********/powerpimpit/
; Returns on top of stack
;
; Windows Version (95, 98, ME, NT x.x, 2000, XP, .NET Server)
; or
; '' (Unknown Windows Version)
;
; Usage:
; Call GetWindowsVersion
; Pop $R0
; ; at this point $R0 is "NT 4.0" or whatnot
Function GetWindowsVersion
Push $R0
Push $R1
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
StrCmp $R0 "" 0 lbl_winnt
; we are not NT.
ReadRegStr $R0 HKLM SOFTWARE\Microsoft\Windows\CurrentVersion VersionNumber
StrCpy $R1 $R0 1
StrCmp $R1 '4' 0 lbl_error
StrCpy $R1 $R0 3
StrCmp $R1 '4.0' lbl_win32_95
StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
lbl_win32_95:
StrCpy $R0 '95'
Goto lbl_done
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 lbl_error
StrCmp $R1 '5.1' lbl_winnt_XP lbl_error
StrCmp $R1 '5.2' lbl_winnt_dotNET 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_dotNET:
Strcpy $R0 '.NET Server'
Goto lbl_done
lbl_error:
Strcpy $R0 ''
lbl_done:
Pop $R1
Exch $R0
FunctionEnd
To detect Windows version plus service pack you may use this plugin by Afrow UK.
Otherwise there is the included header WinVer.nsh, find it into include folder under NSIS installation.
The script above is great but needs some corrections.It doesn't detect XP,first line skip it to lbl_error
StrCmp $R1 '5.0' lbl_winnt_2000 lbl_error
StrCmp $R1 '5.1' lbl_winnt_XP lbl_error
StrCmp $R1 '5.2' lbl_winnt_dotNET lbl_error
StrCmp $R1 '5.0' lbl_winnt_2000 0
StrCmp $R1 '5.1' lbl_winnt_XP 0
StrCmp $R1 '5.2' lbl_winnt_dotNET lbl_error
That script is very old.
The latest one is at:
http://nsis.sourceforge.net/Docs/AppendixC.html#C.5
Stu
Originally posted by Afrow UKok, thanks !
That script is very old.
The latest one is at:
http://nsis.sourceforge.net/Docs/AppendixC.html#C.5
Stu