Version plug-in: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
No edit summary |
|||
(23 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{PageAuthor| | {{PageAuthor|TeeWeTee}} | ||
== Links == | == Links == | ||
Version 0.3 (20. feb 2013)<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> | <attach>NSIS_version_plugin_02.zip</attach><br> | ||
==== Release builds with VS2010 Premium ==== | ==== Release builds with VS2010 Premium (only older 0.2 release)==== | ||
ANSI: http://db.tt/cbyN0KJh | ANSI: http://db.tt/cbyN0KJh | ||
Unicode: http://db.tt/OfllzHW7 | Unicode: http://db.tt/OfllzHW7 | ||
== Description == | == 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 | |||
*GetWindowsVersion | **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 == | == Usage Example == | ||
<highlight-nsis> | <highlight-nsis> | ||
Name VersionExample | |||
# Included files | |||
!include Sections.nsh | |||
!include "LogicLib.nsh" | |||
OutFile "Example_Version_NSIS_plugin.exe" | |||
var | #Declare variables | ||
var isWindowsXP | |||
var MajorVersion | var MajorVersion | ||
var MinorVersion | var MinorVersion | ||
Line 53: | Line 60: | ||
var PlatformID | var PlatformID | ||
var CSDVersion | var CSDVersion | ||
var ProductType | |||
Section -Nope | |||
#Nothing to do here | |||
SectionEnd | |||
Function .onInit | Function .onInit | ||
#detect Windows XP | |||
Version::IsWindowsXP | Version::IsWindowsXP | ||
#obtain value | |||
Pop $isWindowsXP | |||
Pop $ | ${if} $isWindowsXP == "1" | ||
MessageBox MB_OK "Its Windows XP!" | |||
${Else} | |||
MessageBox MB_OK "Its not Windows XP!" | |||
${EndIf} | |||
#call plugin dll function | |||
Version::GetWindowsVersion | Version::GetWindowsVersion | ||
Pop $MajorVersion | Pop $MajorVersion | ||
Line 96: | Line 88: | ||
Pop $PlatformID | Pop $PlatformID | ||
Pop $CSDVersion | Pop $CSDVersion | ||
Pop $ProductType | |||
${if} $ProductType == "1" | |||
MessageBox MB_OK "$PlatformID-platform, version $MajorVersion.$MinorVersion, build $BuildNumber, $CSDVersion" | 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 | FunctionEnd | ||
</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