Пример #1
0
 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();
 }
Пример #2
0
        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);
            }
        }
Пример #3
0
 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();
     }
 }
Пример #4
0
 public NewReleaseAvailableEvent(Release release, UpdateState updateState)
     : base(release)
 {
     UpdateState = updateState;
 }
Пример #5
0
 public NewReleaseEvent(Release release)
 {
     Release = release;
 }
Пример #6
0
 public NewReleaseEvent(Release release)
 {
     Release = release;
 }
Пример #7
0
        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;
            }
        }