private static void RespCallback(IAsyncResult asynchronousResult) { RequestState requestState = (RequestState)asynchronousResult.AsyncState; UpdateDownloader updateDownloader = requestState.UpdateDownloader; updateDownloader.versionInfoReceived.Set(); try { WebResponse response = requestState.Request.EndGetResponse(asynchronousResult); StreamReader sr = new StreamReader(response.GetResponseStream()); string versionString = sr.ReadLine(); Version version = new Version(versionString.Trim()); updateDownloader.latestVersion = version; } catch (WebException ex) { Graphics.Application.Log("Failed to find latest available version: " + ex.Message); } catch (Exception ex) { Graphics.Application.Log("Couldn't parse latest available version: " + ex.Message); } }
static void Main(string[] args) { Application.UnhandledApplicationException += new EventHandler<UnhandledExceptionEventArgs>(Application_UnhandledApplicationException); Application.UnhandledThreadException += new EventHandler<System.Threading.ThreadExceptionEventArgs>(Application_UnhandledThreadException); DefaultSettings = LoadSettings("DefaultSettings") ?? new Settings(); if (DefaultSettings.UseAppDataWorkingDirectory) { Application.ApplicationDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/" + DefaultSettings.ApplicationDataFolder + "/"; } if (!Directory.Exists(Application.ApplicationDataFolder + "Logs")) Directory.CreateDirectory(Application.ApplicationDataFolder + "Logs"); Application.LogInit(); String errorMessage; if (!CheckValidFrameworkSetup(out errorMessage)) { if (System.Windows.Forms.MessageBox.Show( String.Format(Locale.Resource.ErrorWrongFrameworkVersion, errorMessage), Locale.Resource.ErrorWrongFrameworkVersionTitle, System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.No) return; else Application.Log("User ignored missing framework warning"); } Settings = LoadSettings(Application.ApplicationDataFolder + "Settings"); Graphics.Renderer.Results result; if (Settings == null) { Settings = (Settings)DefaultSettings.Clone(); result = Graphics.GraphicsDevice.SettingsUtilities.Initialize(Settings.GraphicsDeviceSettings.DeviceMode); Settings.InitilizeToDefaults(); } else { result = Graphics.GraphicsDevice.SettingsUtilities.Initialize(Settings.GraphicsDeviceSettings.DeviceMode); Application.Log("Defualt video quality: " + Enum.GetValues(typeof(VideoQualities)).GetValue(3 - Graphics.GraphicsDevice.SettingsUtilities.FindRecommendedVideoSettings())); } Settings.WindowedFullscreenSize = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size; foreach (var v in args) { var ss = v.Split('='); var p = Settings.GetType().GetProperty(ss[0].Substring(1)); if (p != null) { object value = null; if (p.PropertyType == typeof(string)) { value = ss[1]; if (ss[1][0] == '\'' && ss[1][ss[1].Length - 1] == '\'') value = ss[1].Substring(1, ss[1].Length - 2); } else value = System.Convert.ChangeType(ss[1], p.PropertyType); Application.Log("Command line argument: " + p.Name + "=" + value); p.SetValue(Settings, value, null); } } Application.Log("Application start up screen resolution: " + Settings.WindowedFullscreenSize.Width + " x " + Settings.WindowedFullscreenSize.Height); SetActiveCulture(Program.Settings.ActiveLanguage); #if !DEBUG if(!System.Diagnostics.Debugger.IsAttached) Application.Log("Installation directory file hashes:", GetApplicationFileInfoString()); #endif if (result == Graphics.Renderer.Results.VideoCardNotSupported) { System.Windows.Forms.MessageBox.Show("Your graphics card is not supported. Game is shutting down."); Process.GetCurrentProcess().Kill(); } else if(result == Graphics.Renderer.Results.VideoCardNotRecommended) { System.Windows.Forms.DialogResult dialogResult = System.Windows.Forms.MessageBox.Show(Locale.Resource.ErrorBadVideoCard, Locale.Resource.GenWarning, System.Windows.Forms.MessageBoxButtons.OKCancel); if (dialogResult == System.Windows.Forms.DialogResult.Cancel) Process.GetCurrentProcess().Kill(); } FeedbackCommon.SendableBase.SendablePosted += new Action<FeedbackCommon.SendableBase>(FeedbackSendablePosted); FeedbackCommon.SendableBase.SendablePostingError += new Action<FeedbackCommon.SendableBase, Exception>(FeedbackSendablePostingError); Graphics.Content.Font.DefaultEncoding = Settings.DefaultEncoding; System.Windows.Forms.Application.EnableVisualStyles(); System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false); //Set the unhandled exception mode to force all Windows Forms errors to go through our handler. //System.Windows.Forms.Application.SetUnhandledExceptionMode(System.Windows.Forms.UnhandledExceptionMode.CatchException); #if TIME_LIMITED #warning TIME LIMITED RELEASE if (DateTime.Now > new DateTime(2011, 5, 2)) { System.Windows.Forms.MessageBox.Show("This version has expired. Please visit http://deadmeetslead.com to purchase the full game."); return; } #endif UpdateDownloader.ClearOldInstallers(); UpdateDownloader updateDownloader = new UpdateDownloader(Directory.GetCurrentDirectory()); if (Settings.CheckForUpdate) { Application.Log("Start looking for latest version"); System.Threading.ThreadPool.QueueUserWorkItem((w) => { updateDownloader.SendLatestVersionRequest(); }); Application.Log("End looking for latest version"); //if (UpdateDownloader.TryToFindUpdate(Directory.GetCurrentDirectory())) // return; // installer launched } using (Window = new System.Windows.Forms.Form { BackColor = Color.Black, Icon = new Icon(global::Common.FileSystem.Instance.OpenRead(Program.DataPath + "/Interface/Common/DesktopIcon1.ico")), Text = Locale.Resource.DeadMeetsLead }) { Application.Init(Window); ProcessCrashStorageDirectory(); // resend any failed send-attempts Application.Log("Client assembly version: " + typeof(Program).Assembly.GetName()); Application.Log("ApplicationData folder: " + Application.ApplicationDataFolder); if (Settings.ChallengeMapMode) Application.Log("Mode: Challenger"); else Application.Log("Mode: Normal"); System.Windows.Forms.Cursor.Hide(); Window.Width = Settings.WindowSize.Width; Window.Height = Settings.WindowSize.Height; Window.WindowState = Settings.WindowState; Window.FormBorderStyle = (Settings.WindowMode == WindowMode.Windowed) ? System.Windows.Forms.FormBorderStyle.Sizable : System.Windows.Forms.FormBorderStyle.None; Window.Controls.Add(Instance = new Program { Dock = System.Windows.Forms.DockStyle.Fill, WindowMode = Settings.WindowMode, GraphicsDevice = new GraphicsDevice9() { Settings = Settings.GraphicsDeviceSettings }, updateDownloader = updateDownloader }); Instance.args = args; UpdateWindowMode(); // Program runs here System.Windows.Forms.Application.Run(Window); // After program close Instance.SaveControls(); SaveSettings(); if (updateMode) updateDownloader.ShowDialog(); // Download update } }