public UpdateDownloadForm(Release release) { InitializeComponent(); Icon = Icon.FromHandle(Resources.Update.GetHicon()); Text = release.Name; changeLog.SetChangelog(release.Changelog); downloadProgress.DisplayStyle = TextProgressBar.ProgressBarDisplayText.Both; downloadProgress.CustomText = release.Asset.name; _releaseFile = new WebFile(new Uri(release.Asset.browser_download_url)); _releaseFile.DownloadProgressChanged += (sender, args) => { downloadProgress.Invoke(new Action(() => { downloadProgress.Value = args.ProgressPercentage; })); }; _releaseFile.DownloadFailed += (sender, @event) => { AppLogger.Log.Error("Couldn't download the Release ", @event.Exception); MessageBox.Show(@event.Exception.Message, UpdateFormStrings.downloadFailed, MessageBoxButtons.OK, MessageBoxIcon.Error); }; _releaseFile.Downloaded += (sender, args) => { installButton.Invoke(new Action(() => { installButton.Enabled = true; downloadProgress.Enabled = false; })); }; _releaseFile.DownloadFile(); }
private void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { if (e.Error != null) { AppLogger.Log.Error("Exception while getting release ", e.Error); return; } var serverRelease = JsonConvert.DeserializeObject<GitHubRelease>(e.Result); var version = new Version(serverRelease.tag_name.Substring(1)); var changelog = Regex.Split(serverRelease.body, "\r\n|\r|\n"); try { var installer = serverRelease.assets.First(asset => asset.name.EndsWith(".exe")); var release = new Release(version,installer, serverRelease.name); release.Changelog.AddRange(changelog); if (version > AppVersion) { UpdateAvailable?.Invoke(this, new NewReleaseEvent(release)); } } catch (Exception ex) { AppLogger.Log.Error("Exception while getting release ", ex); } }
public void Update(Release release, bool closeApp) { using (AppLogger.Log.InfoCall()) { var file = new WebFile(new Uri(release.Asset.browser_download_url), InstallerFilePath); file.Downloaded += (sender, args) => { AppLogger.Log.Info("Update downloaded: " + file); file.Start(InstallerParameters); if (closeApp) { _context.Send(s => { Application.Exit(); }, null); } }; file.DownloadFile(); } }
public NewReleaseAvailableEvent(Release release, UpdateState updateState) : base(release) { UpdateState = updateState; }
public NewReleaseEvent(Release release) { Release = release; }
private bool ProcessRelease(GitHubRelease serverRelease) { using (AppLogger.Log.InfoCall()) { AppLogger.Log.Info("Checking version: ", serverRelease); if (serverRelease.prerelease && !Beta) { AppLogger.Log.Info("Pre-release and not in Beta Mode."); return false; } var version = new Version(serverRelease.tag_name.Substring(1)); var changelog = Regex.Split(serverRelease.body, "\r\n|\r|\n"); try { if (version > AppVersion) { var installer = serverRelease.assets.First(asset => asset.name.EndsWith(".exe")); var release = new Release(version, installer, serverRelease.name); release.Changelog.AddRange(changelog); UpdateAvailable?.Invoke(this, new NewReleaseEvent(release)); return true; } } catch (Exception ex) { AppLogger.Log.Error("Exception while getting release ", ex); } return false; } }