public static void Main()
var localVersion = "2024.4.30.195";
var remoteVersion = "2024.4.30.195";
Console.WriteLine("Local Version: " + localVersion);
Console.WriteLine("Remote Version: " + remoteVersion);
var result = Program.IsVersionNewer(localVersion, remoteVersion);
Console.WriteLine("Update Avaliable: " + result);
public static bool IsVersionNewer(string localVersionStr, string remoteVersionStr)
int CheckGroup(string[] local, string[] remote, int index)
var requiredLength = index + 1;
if (local.Length >= requiredLength && remote.Length >= requiredLength) {
if (int.TryParse(local[index], out int localInt) && int.TryParse(remote[index], out int remoteInt)) {
if (localInt < remoteInt) {
else if (localInt == remoteInt) {
else if (localInt > remoteInt) {
string[] localGroups = localVersionStr.Split('.');
string[] remoteGroups = remoteVersionStr.Split('.');
var yearResult = CheckGroup(localGroups, remoteGroups, 0);
if (yearResult == -2 || yearResult == -1) return false;
else if (yearResult == 1) return true;
else if (yearResult == 0) {
var monthResult = CheckGroup(localGroups, remoteGroups, 1);
if (monthResult == -2 || monthResult == -1) return false;
else if (monthResult == 1) return true;
else if (monthResult == 0) {
var dayResult = CheckGroup(localGroups, remoteGroups, 2);
if (dayResult == -2 || dayResult == -1) return false;
else if (dayResult == 1) return true;
else if (dayResult == 0) {
var buildResult = CheckGroup(localGroups, remoteGroups, 3);
if (buildResult == -2 || buildResult == -1) return false;
else if (buildResult == 1) return true;
else if (buildResult == 0) {