private void btnCheckForUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                btnCheckForUpdate.Enabled = false;
                richTxtBoxMessage.Clear();
                AddRichtextMessage("Application version:", Color.Black);
                AddRichtextMessage("   > " + ApplicationSettings.ApplicationVersion, Color.Orange);
                AddRichtextMessage(Environment.NewLine, Color.Black);
                AddRichtextMessage("Checking for updates...", Color.Black);
                IRepositoryRelease release = projectRepositoryEndpoint.RepositoryLatestRelease();

                if (projectRepositoryEndpoint.IsApplicationVersionUpToDate(release))
                {
                    AddRichtextMessage(Environment.NewLine, Color.Black);
                    AddRichtextMessage("[Release Notice of this update]", Color.Blue);
                    AddRichtextMessage(release.ReleaseNote, Color.Black);
                    AddRichtextMessage(Environment.NewLine, Color.Black);
                    AddRichtextMessage("Application is up to date...", Color.Green);
                    AddRichtextMessage(Environment.NewLine, Color.Black);
                }
                else
                {
                    AddRichtextMessage(Environment.NewLine, Color.Black);
                    AddRichtextMessage("!!! A new version was available !!!", Color.Orange);
                    AddRichtextMessage(Environment.NewLine, Color.Black);
                    AddRichtextMessage("[New Version]", Color.Blue);
                    AddRichtextMessage(release.ReleaseTagName, Color.Black);
                    AddRichtextMessage(Environment.NewLine, Color.Black);
                    AddRichtextMessage("[Release Notice]", Color.Blue);
                    AddRichtextMessage(release.ReleaseNote, Color.Black);
                    AddRichtextMessage(Environment.NewLine, Color.Black);
                    AddRichtextMessage("[Release package download URL]", Color.Blue);
                    AddRichtextMessage(release.ReleaseURL, Color.Black);
                }
            }
            catch (Exception ex)
            {
                AddRichtextMessage(Environment.NewLine, Color.Black);
                AddRichtextMessage(">>>>>>>>>>", Color.DarkBlue);
                AddRichtextMessage(ex.Message, Color.Red);
                AddRichtextMessage("<<<<<<<<<<", Color.DarkBlue);
                AddRichtextMessage(Environment.NewLine, Color.Black);
                AddRichtextMessage("Try again later to refresh request update quota or if your internet is stable...", Color.Orange);
            }
            btnCheckForUpdate.Enabled = true;
        }
        public bool IsApplicationVersionUpToDate(IRepositoryRelease release)
        {
            try
            {
                //sample format => RELEASE_V_1_0_3
                String[] serverVersion = release.ReleaseTagName.ToUpper().Replace("RELEASE_V_", "").Split(Char.Parse("_"));
                String[] appVersion    = ApplicationSettings.ApplicationVersionSplitted;

                for (int ctr = 0; ctr < serverVersion.Length; ctr++)
                {
                    int version = int.Parse(serverVersion[ctr]);
                    int appver  = int.Parse(appVersion[ctr]);
                    if (version > appver)
                    {
                        return(false);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(true);
        }