Version plug-in: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
Line 2: Line 2:


== Links ==
== Links ==
<attach>NSIS_version_plugin_02.zip</attach><br>
Version 0.3 (20. feb 2013)
Version plug-in on my site [http://faq1c.gorbunov.ru/node/18] (english) (35 KB) (Mirror #1)
<attach>NSIS_version_plugin_03.zip</attach><br>
Version plug-in on my site [http://faq1c.gorbunov.ru/node/13] (russian) (35 KB) (Mirror #1)


==== 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

Revision as of 15:38, 20 February 2013

Author: denis_gorbunov (talk, contrib)


Links

Version 0.3 (20. feb 2013) NSIS_version_plugin_03.zip (69 KB)

Release builds with VS2010 Premium (only older 0.2 release)

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

Description

Windows OS contain special API for OS version detecting. But standard NSIS 2 pack not use this.

My special plugin "Version.dll" use OS API (function GetVersionEx() from "kernel32.dll") for OS version detecting.

Plugin contain function:

  • GetWindowsVersion (get major, minor version, build number, platform id, service pack name);
  • simply OS detect function (IsWindows31, IsWindows95, IsWindows98, IsWindowsME, IsWindowsNT351, IsWindowsNT40, IsWindows2000, IsWindowsXP, IsWindows2003);
  • simply OS platform detect function (IsWindowsPlatformNT, IsWindowsPlatform9x);
  • simply "good" OS detect function (IsWindows98orLater);

Size of plugin "version.dll" is 6144 bytes

Usage Example

; if "version.dll" copied in NSIS plugin sub-directory
; this line is not necessary
 
!addplugindir "plugins"
 
 
; it is not example
; it is for this empty intallation only
 
OutFile "example_Version_NSIS_plugin.exe"
 
 
Section Dummy
; it is not example
; it is for this empty intallation only
SectionEnd
 
 
; variables declaration
 
var TempResult
var MajorVersion
var MinorVersion
var BuildNumber
var PlatformID
var CSDVersion
 
 
Function .onInit
 
  ; detect Windows XP
  ; it is simply
 
  ; call plugin dll function 
 
  Version::IsWindowsXP
 
  ; get result
 
  Pop $TempResult
 
  ; check result
 
  StrCmp $TempResult "1" ItIsWindowsXP IsIsNotWindowsXP
 
  ItIsWindowsXP:
  MessageBox MB_OK "This OS is Windows XP"
  Goto Go2
 
  IsIsNotWindowsXP:
  MessageBox MB_OK "This OS is not Windows XP"
  Goto Go2
 
 
  ; get Windows OS version info
 
  Go2:
 
  ; call plugin dll function 
 
  Version::GetWindowsVersion

  ; get result
 
  Pop $MajorVersion
  Pop $MinorVersion
  Pop $BuildNumber
  Pop $PlatformID
  Pop $CSDVersion
 
  ; show result
  MessageBox MB_OK "$PlatformID-platform, version $MajorVersion.$MinorVersion, build $BuildNumber, $CSDVersion"
 
FunctionEnd