Version plug-in: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 10: Line 10:
ANSI: http://db.tt/cbyN0KJh
ANSI: http://db.tt/cbyN0KJh
Unicode: http://db.tt/OfllzHW7
Unicode: http://db.tt/OfllzHW7
====<span style="color:red">Virus scanner false alarm</span>====
Currently some malware scanners (AntiVir, TrendMicro) falsely detect the Version.dll as malware. The companies are informed thus this should go away soon. This isn't the first time where this happened to [[NSIS_False_Positives|NSIS]].


== Description ==
== Description ==
Line 26: Line 23:
**IsWindows2000
**IsWindows2000
**IsWindowsXP
**IsWindowsXP
**IsWindows2003
**IsWindowsServer2003
**IsWindowsXPx64
**IsWindowsXPx64
**IsWindowsVista
**IsWindowsVista

Latest revision as of 09:05, 24 April 2014

Author: TeeWeTee (talk, contrib)


Links

Version 0.3 (20. feb 2013)
NSIS_version_plugin_03.zip (69 KB) [Adapted version by TeeWeTee]
Version 0.2 (25 sep 2004) [Version by denis_gorbunov]
NSIS_version_plugin_02.zip (35 KB)

Release builds with VS2010 Premium (only older 0.2 release)

ANSI: http://db.tt/cbyN0KJh Unicode: http://db.tt/OfllzHW7

Description

With this plugin you are able to determine which version of windows you are running. Technically it is using the GetVersionEx() method from the "kernel32.dll".

Features:

  • check for a specific windows version:
    • IsWindows95
    • IsWindows98
    • IsWindowsME
    • IsWindowsNT351
    • IsWindowsNT40
    • IsWindows2000
    • IsWindowsXP
    • IsWindowsServer2003
    • IsWindowsXPx64
    • IsWindowsVista
    • IsWindowsServer2008
    • IsWindows7
    • IsWindowsServer2008R2
    • IsWindows8
    • IsWindowsServer2012
  • Call 'GetWindowsVersion' to get all relevant windows versioning infos:
    • major version
    • minor version
    • build number
    • platform id
    • service pack name
    • product type
  • Call platform methods to detect the windows platform type:
    • IsWindowsPlatformNT
    • IsWindowsPlatform9x

Usage Example

Name VersionExample
 
# Included files
!include Sections.nsh
!include "LogicLib.nsh"
 
OutFile "Example_Version_NSIS_plugin.exe"
 
#Declare variables
var isWindowsXP
var MajorVersion
var MinorVersion
var BuildNumber
var PlatformID
var CSDVersion
var ProductType 
 
 
Section -Nope
#Nothing to do here
SectionEnd
 
Function .onInit
 
  #detect Windows XP
  Version::IsWindowsXP
  #obtain value
  Pop $isWindowsXP
 
  ${if} $isWindowsXP == "1"
    MessageBox MB_OK "Its Windows XP!"
  ${Else}
    MessageBox MB_OK "Its not Windows XP!"
  ${EndIf}
 
  #call plugin dll function 
  Version::GetWindowsVersion

  Pop $MajorVersion
  Pop $MinorVersion
  Pop $BuildNumber
  Pop $PlatformID
  Pop $CSDVersion
  Pop $ProductType
 
  ${if} $ProductType == "1"
    MessageBox MB_OK "$PlatformID-platform, version $MajorVersion.$MinorVersion, build $BuildNumber, $CSDVersion, Workstation"
  ${ElseIf} $ProductType == "2"
    MessageBox MB_OK "$PlatformID-platform, version $MajorVersion.$MinorVersion, build $BuildNumber, $CSDVersion, DomainController"
  ${ElseIf} $ProductType == "3"
    MessageBox MB_OK "$PlatformID-platform, version $MajorVersion.$MinorVersion, build $BuildNumber, $CSDVersion, Server"
  ${Else}
    MessageBox MB_OK "$PlatformID-platform, version $MajorVersion.$MinorVersion, build $BuildNumber, $CSDVersion, Unknown ProductType"
  ${EndIf}
  Quit
 
FunctionEnd

Version History

0.1 (03 sep 2004) (DNG)

  • First public release

0.2 (25 sep 2004) (DNG)

  • Implemented (proprietary) IntToStr-function since Delphi's SysUtils IntToStr requires more space (+ 24 kilobytes uncompressed)

0.3 (20 feb 2013) (TvT)

  • Bugfix: proprietary IntToStr method (from 0.2) is buggy: Returns '6.' instead of '6.0' for Windows Vista (same for W2K 5.0 or NT4.0) Thus using the well testet SysUtils IntToStr method is prefered over some kb in size
  • Added further methods for newer windows operating systems:
    • IsWindowsXPx64
    • IsWindowsVista
    • IsWindowsServer2008
    • IsWindows7
    • IsWindowsServer2008R2
    • IsWindows8
    • IsWindowsServer2012
  • The GetWindowsVersion() method returns the ProductType to be able to differentiate Server and Workstation windows versions
  • Removed inexisting (e.g. isWindows31) and useless (e.g. IsWindows98orLater) methods
  • Adapted the docs

Credits

Version 0.1 and 0.2 have been developed by Denis Gorbunov (http://gorbunov.ru/).
Version 0.3 was developed by TeeWeTee