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 UK
That script is very old.
The latest one is at:
http://nsis.sourceforge.net/Docs/AppendixC.html#C.5

Stu
ok, thanks !