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