Windows Version Detection: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Updated author and download links, and changed format of some pages.)
(Added reference to WinVer which effectively replaces this article)
 
(7 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{PageAuthor|VegetaSan}}
'''Note:''' This has been superseded by [http://nsis.sourceforge.net/Include/WinVer.nsh WinVer.nsh], which is included with NSIS 2.21 and greater.  WinVer allows for easy detection of the Windows version using LogicLib macros and has automatic future-support so you can always tell if the system at hand, even if undetected, is newer or older than what you need.
== The Script ==
== The Script ==
<highlight-nsis>
<highlight-nsis>
; This script will detect which Version of Windows is running. And display
; This script will detect which Version of Windows is running. And display
; it's version in a messagebox
; its version in a messagebox
; Email: dragonbals@hotmail.com
; Email: dragonbals@hotmail.com


SetCompressor lzma
Name "Windows Detection"
Name "Windows Detection"
OutFile "Windows Detection.exe"
OutFile "Windows Detection.exe"
Line 68: Line 73:
   StrCmp $R1 '5.0' lbl_winnt_2000
   StrCmp $R1 '5.0' lbl_winnt_2000
   StrCmp $R1 '5.1' lbl_winnt_XP
   StrCmp $R1 '5.1' lbl_winnt_XP
   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
   StrCmp $R1 '5.2' lbl_winnt_2003
  StrCmp $R1 '6.0' lbl_winnt_vista
  StrCmp $R1 '6.1' lbl_winnt_7 lbl_error


   lbl_winnt_x:
   lbl_winnt_x:
Line 92: Line 99:
Quit
Quit
     Goto lbl_done
     Goto lbl_done
  lbl_winnt_vista:
    Strcpy $R0 'Vista'
MessageBox MB_OK|MB_ICONQUESTION "Windows Vista" IDOK
Quit
    Goto lbl_done
  lbl_winnt_7:
    Strcpy $R0 '7'
MessageBox MB_OK|MB_ICONQUESTION "Windows 7" IDOK
Quit
  Goto lbl_done


   lbl_error:
   lbl_error:
Line 108: Line 127:
</highlight-nsis>
</highlight-nsis>


Page author: [[User:VegetaSan|VegetaSan]]
[[Category:Other Products Version Detection Functions]]

Latest revision as of 06:00, 30 November 2011

Author: VegetaSan (talk, contrib)


Note: This has been superseded by WinVer.nsh, which is included with NSIS 2.21 and greater. WinVer allows for easy detection of the Windows version using LogicLib macros and has automatic future-support so you can always tell if the system at hand, even if undetected, is newer or older than what you need.

The Script

; This script will detect which Version of Windows is running. And display
; its version in a messagebox
; Email: dragonbals@hotmail.com
 
SetCompressor lzma
Name "Windows Detection"
OutFile "Windows Detection.exe"
 
SetDateSave on
SetDatablockOptimize on
CRCCheck on
SilentInstall normal
 
XPStyle On
 
Function .onInit
 
  Push $R0
  Push $R1
 
  ClearErrors
 
  ReadRegStr $R0 HKLM \
  "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
 
  IfErrors 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'
MessageBox MB_OK|MB_ICONQUESTION "Windows 95" IDOK 
Quit
    Goto lbl_done
 
  lbl_win32_98:
    StrCpy $R0 '98'
MessageBox MB_OK|MB_ICONQUESTION "Windows 98" IDOK 
Quit
    Goto lbl_done
 
  lbl_win32_ME:
    StrCpy $R0 'ME'
MessageBox MB_OK|MB_ICONQUESTION "Windows ME" IDOK 
Quit
    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
  StrCmp $R1 '5.1' lbl_winnt_XP
  StrCmp $R1 '5.2' lbl_winnt_2003
  StrCmp $R1 '6.0' lbl_winnt_vista
  StrCmp $R1 '6.1' lbl_winnt_7 lbl_error
 
  lbl_winnt_x:
    StrCpy $R0 "NT $R0" 6
 
  Goto lbl_done
 
  lbl_winnt_2000:
    Strcpy $R0 '2000'
MessageBox MB_OK|MB_ICONQUESTION "Windows 2000" IDOK 
Quit
    Goto lbl_done
 
  lbl_winnt_XP:
    Strcpy $R0 'XP'
MessageBox MB_OK|MB_ICONQUESTION "Windows XP" IDOK 
Quit
    Goto lbl_done
 
  lbl_winnt_2003:
    Strcpy $R0 '2003'
MessageBox MB_OK|MB_ICONQUESTION "Windows 2003" IDOK 
Quit
    Goto lbl_done
 
  lbl_winnt_vista:
    Strcpy $R0 'Vista'
MessageBox MB_OK|MB_ICONQUESTION "Windows Vista" IDOK 
Quit
    Goto lbl_done
 
  lbl_winnt_7:
    Strcpy $R0 '7'
MessageBox MB_OK|MB_ICONQUESTION "Windows 7" IDOK 
Quit
  Goto lbl_done
 
  lbl_error:
    Strcpy $R0 ''
  lbl_done:
 
  Pop $R1
  Exch $R0
 
Quit
FunctionEnd
 
Section "-boo"
;
SectionEnd