Exemple #1
0
        public static UpdateChecker CheckUpdate()
        {
            UpdateChecker updateChecker = new GitHubUpdateChecker("ShareX", "ShareX");

            updateChecker.IsBeta     = Program.IsBeta;
            updateChecker.IsPortable = Program.IsPortable;
            updateChecker.Proxy      = HelpersOptions.CurrentProxy.GetWebProxy();
            updateChecker.CheckUpdate();

            /*
             * // Fallback if GitHub API fails
             * if (updateChecker.Status == UpdateStatus.None || updateChecker.Status == UpdateStatus.UpdateCheckFailed)
             * {
             *  updateChecker = new XMLUpdateChecker(Links.URL_UPDATE, "ShareX");
             *  updateChecker.IsBeta = Program.IsBeta;
             *  updateChecker.Proxy = HelpersOptions.CurrentProxy.GetWebProxy();
             *  updateChecker.CheckUpdate();
             * }
             */

            return(updateChecker);
        }
Exemple #2
0
        private void StartDownload()
        {
            pbProgress.Visible  = false;
            btnStart.Visible    = false;
            lblProgress.Text    = "Finding latest download...";
            lblProgress.Visible = true;

            GitHubUpdateChecker checker = null;
            BackgroundWorker    bw      = new BackgroundWorker();

            bw.DoWork += (sender, e) =>
            {
                checker = new GitHubUpdateChecker("ShareX", "ShareX");
                checker.GetLatestDownloadURL(false, false, false);
            };

            bw.RunWorkerCompleted += (sender, e) =>
            {
                if (checker != null && !string.IsNullOrEmpty(checker.DownloadURL))
                {
                    lblProgress.Text = "Beginning download...";

                    string         downloadPath   = GetDownloadPath(checker.Filename);
                    FileStream     fileStream     = new FileStream(downloadPath, FileMode.Create, FileAccess.Write, FileShare.Read);
                    FileDownloader fileDownloader = new FileDownloader(checker.DownloadURL, fileStream, null, "application/octet-stream");

                    fileDownloader.ExceptionThrowed += (sender2, e2) =>
                    {
                        ResetControls();

                        MessageBox.Show("Error:\r\n\r\n" + fileDownloader.LastException, "puush install", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    };

                    fileDownloader.DownloadStarted += (sender2, e2) =>
                    {
                        lblProgress.Visible = false;
                        pbProgress.Visible  = true;
                    };

                    fileDownloader.ProgressChanged += (sender2, e2) =>
                    {
                        int percentage = (int)Math.Round(fileDownloader.DownloadPercentage);
                        pbProgress.Value = percentage;
                    };

                    fileDownloader.DownloadCompleted += (sender2, e2) =>
                    {
                        if (File.Exists(downloadPath))
                        {
                            Process.Start(downloadPath, "-puush");
                            Environment.Exit(0);
                        }
                    };

                    fileDownloader.StartDownload();
                }
                else
                {
                    ResetControls();

                    MessageBox.Show("Unable to find latest ShareX build.", "puush install", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            };

            bw.RunWorkerAsync();
        }