Version plug-in: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{PageAuthor|denis_gorbunov,PageAuthor|TeeWeTee}}
{{PageAuthor|TeeWeTee}}


== Links ==
== Links ==
Version 0.3 (20. feb 2013)<br>
Version 0.3 (20. feb 2013)<br>
<attach>NSIS_version_plugin_03.zip</attach><br>
<attach>NSIS_version_plugin_03.zip</attach> [Adapted version by TeeWeTee]<br>
Version 0.2 (25 sep 2004) [Version by denis_gorbunov]<br>
<attach>NSIS_version_plugin_02.zip</attach><br>


==== Release builds with VS2010 Premium (only older 0.2 release)====  
==== Release builds with VS2010 Premium (only older 0.2 release)====  
Line 21: Line 23:
**IsWindows2000
**IsWindows2000
**IsWindowsXP
**IsWindowsXP
**IsWindows2003
**IsWindowsServer2003
**IsWindowsXPx64
**IsWindowsXPx64
**IsWindowsVista
**IsWindowsVista
Line 36: Line 38:
**service pack name
**service pack name
**product type
**product type
*Call 'IsWindowsPlatformNT()' or 'IsWindowsPlatform9x' to detect the windows platform type
*Call platform methods to detect the windows platform type:
**IsWindowsPlatformNT
**IsWindowsPlatform9x


== Usage Example ==
== Usage Example ==
Line 100: Line 104:
</highlight-nsis>
</highlight-nsis>


== 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/). <br>
Version 0.3 was developed by TeeWeTee<br>
[[Category:Plugins]]
[[Category:Plugins]]

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