public void UpdateCheck() { try { // Check new version Stream stream; if (PluginDebug.UsesDebugData) { var assembly = Assembly.GetExecutingAssembly(); stream = assembly.GetManifestResourceStream("FFXIV_ACT_Helper_Plugin.Resources.DebugPluginData.xml"); } else { using (WebClient client = new WebClient()) { var data = Encoding.Default.GetString(client.DownloadData("https://ugabugab.github.io/ffxiv-act-helper-plugin/data/plugin_data.xml")); stream = new MemoryStream(Encoding.UTF8.GetBytes(data)); } } XmlSerializer serializer = new XmlSerializer(typeof(PluginData)); var pluginData = (PluginData)serializer.Deserialize(stream); Version currentVersion = typeof(PluginMain).Assembly.GetName().Version; Version latestVersion = new Version(pluginData.Version); if (currentVersion < latestVersion) { // Show update confirming message ActGlobalsExtension.RunOnACTUIThread(delegate { TraySlider traySlider = new TraySlider { ButtonLayout = TraySlider.ButtonLayoutEnum.TwoButton, ButtonSW = { Text = "Update" }, ButtonSE = { Text = "Cancel" }, TrayTitle = { Text = "Plugin Update" }, TrayText = { Text = Properties.Resources.MessagePluginUpdate }, ShowDurationMs = 30000 }; traySlider.ButtonSW.Click += delegate(object sender, EventArgs eventArgs) { UpdatePlugin(pluginData.Url); }; traySlider.ShowTraySlider(); }); } } catch (ThreadAbortException) { // Do nothing } catch (Exception ex) { ShowErrorMessage(ex); } }
void ShowErrorMessage(Exception ex) { ActGlobalsExtension.RunOnACTUIThread(delegate { new TraySlider { ButtonLayout = TraySlider.ButtonLayoutEnum.OneButton, TrayTitle = { Text = "Plugin Update Error" }, TrayText = { Text = string.Format(Properties.Resources.MessagePluginUpdateError, ex.Message) } } .ShowTraySlider(); }); }