private void CheckLauncherUpdate(object sender, RoutedEventArgs e)
        {
            SelfUpdater TheSelfUpdater = new SelfUpdater();

            TheSelfUpdater.allowMessage = true;
            TheSelfUpdater.UpdateLauncher();
        }
        public MainWindow()
        {
            InitializeComponent();

#if DEBUG
            IsDebugMode = true;
#endif

            // Self Updater
            SelfUpdater.DeleteOldFiles(); // not really needed since CleanAndLaunch.exe

            SelfUpdater TheSelfUpdater = new SelfUpdater();
            TheSelfUpdater.SetMainWindowRef(this);
            TheSelfUpdater.UpdateLauncher();

            if (SelfUpdater.LaucherRemoteVNumber != SelfUpdater.LaucherLocalVNumber && SelfUpdater.isSelfUpdating)
            {
                Hide();
            }
            else
            {
                // Set the title of the window with the correct launcher version
                if (SelfUpdater.isSelfUpdating)
                {
                    Launcher_Window.Title = "Natural Launcher v " + SelfUpdater.LaucherLocalVNumber;
                }
                else
                {
                    Launcher_Window.Title = "Natural Launcher";
                }

                // CHECK THE HL AND NS INSTALL DIR AND WRITE IT IN THE LAUNCHER XML
                Launcher.CheckInstallDirectory();

                // set the experimental label
                if (Launcher.isExperimental)
                {
                    Experimental_label.Visibility = Visibility.Visible;
                }
                else
                {
                    Experimental_label.Visibility = Visibility.Hidden;
                }

                // WE SET DISCORD PRESENCE
                string ApplicationID = "474144509048127503";
                Discordclient = new DiscordRpcClient(ApplicationID);

                Discordclient.Initialize();

                OnlineStatusAtLaunch();

                System.Timers.Timer PresenceTimer = new System.Timers.Timer();
                PresenceTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
                PresenceTimer.Enabled  = true;
                PresenceTimer.Interval = 5000;

                // *** Get the main index.html if connected *** \\
                if (Util.CheckForInternetConnection(Launcher.MainPageURL.AbsoluteUri)) //if we are connected
                {
                    Launcher.RefreshInternetPageAsync("Main");                         // we refresh the page
                    MainWebBrowser.Source = Launcher.MainPageURL;                      // and display it from source
                }
                else // if not simply show the saved file
                {
                    MainWebBrowser.Navigate(LocalIndexURL.AbsolutePath);
                }

                // CHECK APP.VERSION NUMBER
                Check_Version();

                if (versionNumber != remoteVersionNumber && versionNumber != "0.0.0.0")
                {
                    MessageBoxResult AlertBox = System.Windows.MessageBox.Show("Update Needed !", "Update", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    StartButton.Content = "Please Update";
                    IsVerification      = false;
                }
                if (versionNumber == "0.0.0.0")
                {
                    StartButton.Content = "Verify";
                    IsVerification      = false;
                }
                if (versionNumber == remoteVersionNumber && versionNumber != "0.0.0.0")
                {
                    StartButton.Content = "Play"; // TODO The algorithm to verify btween local and remote manifest
                }
            }
        }