VersionCompare: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Wikipedia python library)
 
m (Updated author and download links, and changed format of some pages.)
Line 120: Line 120:
</highlight-nsis>
</highlight-nsis>


 
Page author: [[User:Instructor|Instructor]]
Page author: Instructor

Revision as of 12:44, 23 April 2005

Links

Latest version of headers "nsh.zip"
http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost

The Function

/*
____________________________________________________________________________
 
                            VersionCompare v1.0
____________________________________________________________________________
 
2005 Shengalts Aleksander (Shengalts@mail.ru)
 
Thanks Afrow UK (Based on his Function "VersionCheckNew2" 2005-01-24)
 
 
Compare version numbers.
 
 
Syntax:
 
Push "[Version1]"     ; [Version1]
                      ;   First version
Push "[Version2]"     ; [Version2]
                      ;   Second version
                      ;
Call VersionCompare   ; Call function
                      ;
Pop $var              ; Result:
                      ;    $var=0  Versions are equal
                      ;    $var=1  Version1 is newer
                      ;    $var=2  Version2 is newer
 
 
Example:
Section
	Push "1.1.1.9"
	Push "1.1.1.01"
	Call VersionCompare
	Pop $R0     ; $R0="1"
SectionEnd*/
 
 
;---------------------------------------------------------------------------
Function VersionCompare
	Exch $1
	Exch
	Exch $0
	Exch
	Push $2
	Push $3
	Push $4
	Push $5
	Push $6
	Push $7
 
	begin:
	StrCpy $2 -1
	IntOp $2 $2 + 1
	StrCpy $3 $0 1 $2
	StrCmp $3 '' +2
	StrCmp $3 '.' 0 -3
	StrCpy $4 $0 $2
	IntOp $2 $2 + 1
	StrCpy $0 $0 '' $2
 
	StrCpy $2 -1
	IntOp $2 $2 + 1
	StrCpy $3 $1 1 $2
	StrCmp $3 '' +2
	StrCmp $3 '.' 0 -3
	StrCpy $5 $1 $2
	IntOp $2 $2 + 1
	StrCpy $1 $1 '' $2
 
	StrCmp $4$5 '' equal
 
	StrCpy $6 -1
	IntOp $6 $6 + 1
	StrCpy $3 $4 1 $6
	StrCmp $3 '0' -2
	StrCmp $3 '' 0 +2
	StrCpy $4 0
 
	StrCpy $7 -1
	IntOp $7 $7 + 1
	StrCpy $3 $5 1 $7
	StrCmp $3 '0' -2
	StrCmp $3 '' 0 +2
	StrCpy $5 0
 
	StrCmp $4 0 0 +2
	StrCmp $5 0 begin newer2
	StrCmp $5 0 newer1
	IntCmp $6 $7 0 newer1 newer2
 
	StrCpy $4 '1$4'
	StrCpy $5 '1$5'
	IntCmp $4 $5 begin newer2 newer1
 
	equal:
	StrCpy $0 0
	goto end
	newer1:
	StrCpy $0 1
	goto end
	newer2:
	StrCpy $0 2
 
	end:
	Pop $7
	Pop $6
	Pop $5
	Pop $4
	Pop $3
	Pop $2
	Pop $1
	Exch $0
FunctionEnd

Page author: Instructor