GetFileVersion: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
Instructor (talk | contribs) No edit summary |
No edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 25: | Line 25: | ||
Note: | Note: | ||
-Error flag if file | -Error flag if file doesn't exist | ||
-Error flag if file | -Error flag if file doesn't contain version information | ||
</highlight-nsis> | </highlight-nsis> | ||
Line 61: | Line 61: | ||
GetDllVersion '$0' $1 $2 | GetDllVersion '$0' $1 $2 | ||
IfErrors error | IfErrors error | ||
IntOp $3 $1 | IntOp $3 $1 >> 16 | ||
IntOp $3 $3 & 0x0000FFFF | |||
IntOp $4 $1 & 0x0000FFFF | IntOp $4 $1 & 0x0000FFFF | ||
IntOp $5 $2 | IntOp $5 $2 >> 16 | ||
IntOp $5 $5 & 0x0000FFFF | |||
IntOp $6 $2 & 0x0000FFFF | IntOp $6 $2 & 0x0000FFFF | ||
StrCpy $0 '$3.$4.$5.$6' | StrCpy $0 '$3.$4.$5.$6' |
Latest revision as of 17:38, 26 June 2007
Author: Instructor (talk, contrib) |
Page for NSIS 2.07 and below users
You can use the latest version of headers (recommended) or the following function code (put the function code in your script before calling it)
Function Description
____________________________________________________________________________ GetFileVersion ____________________________________________________________________________ Thanks KiCHiK (Based on his example for command "GetDLLVersion") Get version information from executable file. Syntax: ${GetFileVersion} "[Executable]" $var "[Executable]" ; Executable file (*.exe *.dll ...) $var ; Result: Version number Note: -Error flag if file doesn't exist -Error flag if file doesn't contain version information
Example:
Section ${GetFileVersion} "C:\ftp\program.exe" $R0 ; $R0="1.1.0.12" SectionEnd
Function Code
Function GetFileVersion !define GetFileVersion `!insertmacro GetFileVersionCall` !macro GetFileVersionCall _FILE _RESULT Push `${_FILE}` Call GetFileVersion Pop ${_RESULT} !macroend Exch $0 Push $1 Push $2 Push $3 Push $4 Push $5 Push $6 ClearErrors GetDllVersion '$0' $1 $2 IfErrors error IntOp $3 $1 >> 16 IntOp $3 $3 & 0x0000FFFF IntOp $4 $1 & 0x0000FFFF IntOp $5 $2 >> 16 IntOp $5 $5 & 0x0000FFFF IntOp $6 $2 & 0x0000FFFF StrCpy $0 '$3.$4.$5.$6' goto end error: SetErrors StrCpy $0 '' end: Pop $6 Pop $5 Pop $4 Pop $3 Pop $2 Pop $1 Exch $0 FunctionEnd