GetFileVersion: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 1: Line 1:
{{PageAuthor|Instructor}}
{{PageAuthor|Instructor}}


== Links ==
{{User:Instructor/Headers/Template}}


; Latest version of headers "nsh.zip":
== Function Description==
: http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost
 
If a function is used without header, put the function code in your script before calling it.
 
== The Function Description==


<highlight-nsis>
<highlight-nsis>
Line 43: Line 38:
</highlight-nsis>
</highlight-nsis>


== The Function Code==
== Function Code ==


<highlight-nsis>
<highlight-nsis>

Revision as of 12:09, 30 November 2005

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 isn't exist
-Error flag if file isn'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 / 0x00010000
	IntOp $4 $1 & 0x0000FFFF
	IntOp $5 $2 / 0x00010000
	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