public static UpdaterResult CheckForUpdates() { UpdaterMode mode = ConfigKey.UpdaterMode.GetEnum<UpdaterMode>(); if( mode == UpdaterMode.Disabled ) return UpdaterResult.NoUpdate; string url = String.Format( UpdateUrl, CurrentRelease.Revision ); if( RaiseCheckingForUpdatesEvent( ref url ) ) return UpdaterResult.NoUpdate; Logger.Log( LogType.SystemActivity, "Checking for fCraft updates..." ); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create( url ); request.Method = "GET"; request.UserAgent = "fCraft"; request.Timeout = UpdateCheckTimeout; request.ReadWriteTimeout = UpdateCheckTimeout; request.CachePolicy = new HttpRequestCachePolicy( HttpRequestCacheLevel.BypassCache ); request.UserAgent = UserAgent; using( WebResponse response = request.GetResponse() ) { // ReSharper disable AssignNullToNotNullAttribute // ReSharper disable PossibleNullReferenceException using( XmlTextReader reader = new XmlTextReader( response.GetResponseStream() ) ) { // ReSharper restore AssignNullToNotNullAttribute XDocument doc = XDocument.Load( reader ); XElement root = doc.Root; if( root.Attribute( "result" ).Value == "update" ) { string downloadUrl = root.Attribute( "url" ).Value; var releases = new List<ReleaseInfo>(); // ReSharper disable LoopCanBeConvertedToQuery foreach( XElement el in root.Elements( "Release" ) ) { releases.Add( new ReleaseInfo( Int32.Parse( el.Attribute( "v" ).Value ), Int32.Parse( el.Attribute( "r" ).Value ), Int64.Parse( el.Attribute( "date" ).Value ).ToDateTime(), el.Element( "Summary" ).Value, el.Element( "ChangeLog" ).Value, ReleaseInfo.StringToReleaseFlags( el.Attribute( "flags" ).Value ) ) ); } // ReSharper restore LoopCanBeConvertedToQuery // ReSharper restore PossibleNullReferenceException UpdaterResult result = new UpdaterResult( (releases.Count > 0), new Uri( downloadUrl ), releases.ToArray() ); RaiseCheckedForUpdatesEvent( UpdateUrl, result ); return result; } else { return UpdaterResult.NoUpdate; } } } } catch( Exception ex ) { Logger.Log( LogType.Error, "An error occured while trying to check for updates: {0}: {1}", ex.GetType(), ex.Message ); return UpdaterResult.NoUpdate; } }
private void SetStartMode(UpdaterMode mode) { this.mode = mode; if (mode == UpdaterMode.Instalation) { InstalationMode(); } else if (mode == UpdaterMode.Update) { UpdateMode(); } }
static void CheckForUpdates() { UpdaterMode updaterMode = ConfigKey.UpdaterMode.GetEnum <UpdaterMode>(); if (updaterMode == UpdaterMode.Disabled) { return; } UpdaterResult update = Updater.CheckForUpdates(); if (!update.UpdateAvailable) { return; } Console.WriteLine("** A new version of fCraft is available: {0}, released {1:0} day(s) ago. **", update.LatestRelease.VersionString, update.LatestRelease.Age.TotalDays); if (updaterMode != UpdaterMode.Notify) { WebClient client = new WebClient(); client.DownloadProgressChanged += OnUpdateDownloadProgress; client.DownloadFileCompleted += OnUpdateDownloadCompleted; client.DownloadFileAsync(update.DownloadUri, Paths.UpdaterFileName); UpdateDownloadWaiter.WaitOne(); if (updateFailed) { return; } if (updaterMode == UpdaterMode.Prompt) { Console.WriteLine("Restart the server and update now? y/n"); var key = Console.ReadKey(); if (key.KeyChar == 'y') { RestartForUpdate(); } else { Console.WriteLine("You can update manually by shutting down the server and running " + Paths.UpdaterFileName); } } else { RestartForUpdate(); } } }
public UpdaterSettingsPopup() { InitializeComponent(); Shown += delegate { oldRunBeforeUpdate = RunBeforeUpdate; oldRunAfterUpdate = RunAfterUpdate; oldUpdaterMode = UpdaterMode; oldBackupBeforeUpdate = BackupBeforeUpdate; }; FormClosed += delegate { if( DialogResult != DialogResult.OK ) { RunBeforeUpdate = oldRunBeforeUpdate; RunAfterUpdate = oldRunAfterUpdate; UpdaterMode = oldUpdaterMode; BackupBeforeUpdate = oldBackupBeforeUpdate; } }; }
public UpdaterSettingsPopup() { InitializeComponent(); Shown += delegate { oldRunBeforeUpdate = RunBeforeUpdate; oldRunAfterUpdate = RunAfterUpdate; oldUpdaterMode = UpdaterMode; oldBackupBeforeUpdate = BackupBeforeUpdate; }; FormClosed += delegate { if (DialogResult != DialogResult.OK) { RunBeforeUpdate = oldRunBeforeUpdate; RunAfterUpdate = oldRunAfterUpdate; UpdaterMode = oldUpdaterMode; BackupBeforeUpdate = oldBackupBeforeUpdate; } }; }
// Considering the desired mode : CPU MT/ST or GPU // Set the delegates to execute the right function // During each frame update void SetDelegates() { if (appMode == 2) { updaterMode = new UpdaterMode(GPU); updater = new Updater(Update_GPU); } else { updater = new Updater(Update_CPU); if (appMode == 1) { updaterMode = new UpdaterMode(MT); } else { updaterMode = new UpdaterMode(ST); } } }
void StartupThread() { #if !DEBUG try { #endif Server.InitLibrary(Environment.GetCommandLineArgs()); if (shutdownPending) { return; } Server.InitServer(); if (shutdownPending) { return; } BeginInvoke((Action)OnInitSuccess); // check for updates UpdaterMode updaterMode = ConfigKey.UpdaterMode.GetEnum <UpdaterMode>(); if (updaterMode != UpdaterMode.Disabled) { UpdaterResult update = Updater.CheckForUpdates(); if (shutdownPending) { return; } if (update.UpdateAvailable) { if (updaterMode == UpdaterMode.Notify) { String updateMsg = String.Format("An fCraft update is available! Visit www.fCraft.net to download. " + "Local version: {0}. Latest available version: {1}.", Updater.CurrentRelease.VersionString, update.LatestRelease.VersionString); Logger.LogToConsole(updateMsg); } else { DialogResult result = new UpdateWindow(update).ShowDialog(); if (result == DialogResult.Cancel) { // startup aborted (restart for update) return; } } } } // set process priority if (!ConfigKey.ProcessPriority.IsBlank()) { try { Process.GetCurrentProcess().PriorityClass = ConfigKey.ProcessPriority.GetEnum <ProcessPriorityClass>(); } catch (Exception) { Logger.Log(LogType.Warning, "MainForm.StartServer: Could not set process priority, using defaults."); } } if (shutdownPending) { return; } if (Server.StartServer()) { startupComplete = true; BeginInvoke((Action)OnStartupSuccess); } else { BeginInvoke((Action)OnStartupFailure); } #if !DEBUG } catch (Exception ex) { Logger.LogAndReportCrash("Unhandled exception in ServerGUI.StartUp", "ServerGUI", ex, true); Shutdown(ShutdownReason.Crashed); } #endif }
static void Main(string[] args) { Logger.Logged += OnLogged; Heartbeat.UriChanged += OnHeartbeatUrlChanged; #if !DEBUG try { #endif Server.InitLibrary(args); Server.InitServer(); UpdaterMode updaterMode = ConfigKey.UpdaterMode.GetEnum <UpdaterMode>(); if (updaterMode != UpdaterMode.Disabled) { UpdaterResult update = Updater.CheckForUpdates(); if (update.UpdateAvailable) { Console.WriteLine("** A new version of fCraft is available: {0}, released {1:0} day(s) ago. **", update.LatestRelease.VersionString, update.LatestRelease.Age.TotalDays); } } if (!ConfigKey.ProcessPriority.IsBlank()) { try { Process.GetCurrentProcess().PriorityClass = ConfigKey.ProcessPriority.GetEnum <ProcessPriorityClass>(); } catch (Exception) { Logger.Log("Program.Main: Could not set process priority, using defaults.", LogType.Warning); } } if (Server.StartServer()) { Console.Title = "fCraft " + Updater.CurrentRelease.VersionString + " - " + ConfigKey.ServerName.GetString(); Console.WriteLine("** Running fCraft version {0}. **", Updater.CurrentRelease.VersionString); Console.WriteLine("** Server is now ready. Type /shutdown to exit safely. **"); while (!Server.IsShuttingDown) { string cmd = Console.ReadLine(); if (cmd.Equals("/clear", StringComparison.OrdinalIgnoreCase)) { Console.Clear(); } else { try { Player.Console.ParseMessage(cmd, true); } catch (Exception ex) { Logger.LogAndReportCrash("Error while executing a command from console", "fCraftConsole", ex, false); } } } } else { ReportFailure(ShutdownReason.FailedToStart); } #if !DEBUG } catch (Exception ex) { ReportFailure(ShutdownReason.Crashed); Logger.LogAndReportCrash("Unhandled exception in fCraftConsole", "fCraftConsole", ex, true); } finally { Console.ResetColor(); } #endif }