Squirre1
26th September 2010 05:21 UTC
VersionCheckNew null Bug
Afro,
Found a bug in versionchecknew... You almost had it but just missed one small piece...
If you look below in the first two StrCpy's, you append the . to the end of $R0 and $R1. Then you look to see if $R0 and $R1 are null, which they never will be. For ex. if $R0 and $R1 are null then @Next $R0$R1 = ".." and the latter test for single $R0 or $R1 is null is testing against "." so will never set the value to "0.".
Present Code:
StrCpy $R1 $R1.
StrCpy $R0 $R0.
>Next: StrCmp $R0$R1 ".." 0 +3
StrCpy $R0 0
Goto Done
StrCmp $R0"" 0 +2
StrCpy $R0 0.
StrCmp $R1"" 0 +2
StrCpy $R1 0.
>
Easily modified code:
StrCpy $R1 $R1.
StrCpy $R0 $R0.
>Next: StrCmp $R0$R1 ".." 0 +3
StrCpy $R0 0
Goto Done
StrCmp $R0"." 0 +2
StrCpy $R0 0.
StrCmp $R1"." 0 +2
StrCpy $R1 0.
>
Just a heads up...
Later all...
Animaether
26th September 2010 05:46 UTC
out of sheer curiosity.. why aren't you using ${VersionCompare} out of WordFunc.nsh (as mentioned in the other thread)? VersionCompare was based on VersionCheckNew2 (VersionCheckNewNew!) and should behave solidly.. it's part of your NSIS install; whereas any iteration of VersionCheck isn't.
Squirre1
26th September 2010 21:34 UTC
no particular reason, was the first version comparison I came across... Are there any benifits to using the VersionCompare opposed to VersionCheckNew5 or versionchecknewnewnewnewnew ;) :P
Afrow UK
26th September 2010 23:15 UTC
Animaether already gave a benefit; VersionCompare is based on VersionCheckNew (and therefore improves upon it). Also anything included with NSIS is 99% certain to be solid as it will have been used by the most people and therefore tested thoroughly.
In fact, the VersionCheckNew Wiki page clearly states it has a bug and to use VersionCompare.
Stu