Back to this thread topic about the invalid double error.
The error reported is indeed confusing. It actually happens on the next line:
If Starter.gVersionName < Version(0) Then
If you check the value of Starter.gVersionName you will see that it is "null".
The problem is in this code:
gVersionName = KVS.Get("VersionName")
If gVersionName.Length = 0 Then
gVersionName = Application.VersionName
KVS.Put("VersionName", gVersionName)
End If
KVS.Get doesn't return an empty string when the key is not found. It returns Null (because the return type is Object).
The Null is converted to "null" when you assign it to a string.
A simple solution is to change the code to:
gVersionName = KVS.GetDefault("VersionName", "")