public bool CheckVersion(bool forceUpdate = false)
        {
            try
            {
                if (!GUIMode)
                {
                    Console.WriteLine("Checking for IRSE updates...");
                }

                if (m_useDevRelease && m_developmentRelease == null)
                {
                    Console.WriteLine("No Development Updates Exist");
                    return(false);
                }

                if (!m_useDevRelease && m_currentRelease == null)
                {
                    Console.WriteLine("No Updates Exist");
                    return(false);
                }


                string devText = (m_useDevRelease ? "Development Version" : "");

                var checkedVersion = new Version(m_currentRelease?.TagName);

                if (m_useDevRelease)
                {
                    checkedVersion = new Version(m_developmentRelease?.TagName);
                }

                NewVersionNumber = checkedVersion;

                Release localRelease = m_currentRelease;

                if (m_useDevRelease)
                {
                    localRelease = m_developmentRelease;
                }

                HasUpdate = (checkedVersion > Program.Version || forceUpdate);

                if (GUIMode)
                {
                    OnUpdateChecked?.Invoke(localRelease);
                    return(true);
                }

                if (HasUpdate)
                {
                    Console.WriteLine($"IRSE:  A new {devText} version of IRSE has been detected.\r\n");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"Name: { localRelease.Name }");
                    Console.WriteLine($"Version: { localRelease.TagName }");
                    if (localRelease.Assets.Count > 0)
                    {
                        Console.WriteLine($"Total Downloads: { localRelease.Assets.First().DownloadCount }");
                    }
                    if (localRelease.Assets.Count > 0)
                    {
                        Console.WriteLine($"Published Date: { localRelease.Assets.First().CreatedAt.ToLocalTime() }\r\n");
                    }
                    Console.ResetColor();

                    if (!EnableAutoUpdates)
                    {
                        Console.WriteLine("Would you like to see the changes? (y/n)");

                        if (Console.ReadKey().Key == ConsoleKey.Y)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\r\nChanges:\r\n" + localRelease.Body);
                            Console.ResetColor();
                        }

                        if (m_useDevRelease)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("WARNING: Be absolutely sure that your server is backed up!");
                            Console.WriteLine("WARNING: Development Versions CAN break your server!\r\n");
                            Console.WriteLine($"Press Y to continue, or N to quit. (y/n)");
                            Console.ResetColor();

                            if (Console.ReadKey().Key == ConsoleKey.Y)
                            {
                                Console.WriteLine("\r\nWould you like to update with the development version now? (y/n)");

                                if (Console.ReadKey().Key == ConsoleKey.Y)
                                {
                                    Console.WriteLine("\r\n");
                                    DownloadLatestRelease(true);
                                    return(true);
                                }
                            }
                            else if (Console.ReadKey().Key == ConsoleKey.N)
                            {
                                Console.WriteLine($"Canceling this {devText} update for now");
                                return(false);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Would you like to update now? (y/n)");

                            if (Console.ReadKey().Key == ConsoleKey.Y)
                            {
                                Console.WriteLine("\r\n");
                                DownloadLatestRelease();
                                return(true);
                            }
                        }

                        Console.WriteLine("IRSE:  Skipping update.. We'll ask next time you restart IRSE!");
                    }
                    else
                    {
                        Console.WriteLine("IRSE: Auto updating");
                        DownloadLatestRelease(m_useDevRelease);
                    }
                    return(true);
                }
                else
                {
                    Console.WriteLine("IRSE:  IRSE is running the latest version!");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("IRSE:  Update Failed (CheckVersion)" + ex.ToString());
            }
            return(false);
        }
        public bool CheckVersion(bool forceUpdate = false)
        {
            try
            {
                string devText = (m_useDevRelease ? "Development Version" : "");

                var checkedVersion = new Version(m_currentRelease.TagName);

                if (m_useDevRelease)
                {
                    checkedVersion = new Version(m_developmentRelease.TagName);
                }

                NewVersionNumber = checkedVersion;

                Release localRelease = m_currentRelease;

                if (m_useDevRelease)
                {
                    localRelease = m_developmentRelease;
                }

                if (GUIMode)
                {
                    HasUpdate = (checkedVersion > HES.Version || forceUpdate);

                    OnUpdateChecked?.Invoke(localRelease);
                    return(true);
                }

                if (checkedVersion > HES.Version || forceUpdate)
                {
                    Console.WriteLine($"HellionExtendedServer:  A new {devText} version of Hellion Extended Server has been detected.\r\n");
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"Name: { localRelease.Assets.First().Name }");
                    Console.WriteLine($"Version: { localRelease.TagName }");
                    Console.WriteLine($"Total Downloads: { localRelease.Assets.First().DownloadCount }");
                    Console.WriteLine($"Published Date: { localRelease.Assets.First().CreatedAt }\r\n");
                    Console.ResetColor();

                    if (!EnableAutoUpdates)
                    {
                        Console.WriteLine("Would you like to see the changes? (y/n)");

                        if (Console.ReadKey().Key == ConsoleKey.Y)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\r\nChanges:\r\n" + localRelease.Body);
                            Console.ResetColor();
                        }

                        if (m_useDevRelease)
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("WARNING: Be absolutely sure that your server is backed up!");
                            Console.WriteLine("WARNING: Development Versions CAN break your server!\r\n");
                            Console.WriteLine($"Do you agree to use this {devText}? (y/n)");
                            Console.ResetColor();

                            if (Console.ReadKey().Key == ConsoleKey.Y)
                            {
                                Console.WriteLine("\r\nWould you like to update with the development version now? (y/n)");

                                if (Console.ReadKey().Key == ConsoleKey.Y)
                                {
                                    Console.WriteLine("\r\n");
                                    DownloadLatestRelease(true);
                                    return(true);
                                }
                            }
                            else if (Console.ReadKey().Key == ConsoleKey.N)
                            {
                                Console.WriteLine($"Canceling this {devText} update for now");
                                return(false);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Would you like to update now? (y/n)");

                            if (Console.ReadKey().Key == ConsoleKey.Y)
                            {
                                Console.WriteLine("\r\n");
                                DownloadLatestRelease();
                                return(true);
                            }
                        }

                        Console.WriteLine("HellionExtendedServer:  Skipping update.. We'll ask next time you restart HES!");
                    }
                    else
                    {
                        Console.WriteLine("HellionExtendedServer:  Auto updating");
                        DownloadLatestRelease(m_useDevRelease);
                    }
                    return(true);
                }
                else
                {
                    Console.WriteLine("HellionExtendedServer:  HES is running the latest version!");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("HellionExtendedServer:  Update Failed (CheckVersion)" + ex.ToString());
            }
            return(false);
        }