Ejemplo n.º 1
0
        public static async Task DownloadUpdaterAsync(Progress <int> downloadProgress)
        {
            try
            {
                var url = ApplicationStateManager.GetNewVersionUpdaterUrl();
                var downloadRootPath = Path.Combine(Paths.Root, "updaters");
                if (!Directory.Exists(downloadRootPath))
                {
                    Directory.CreateDirectory(downloadRootPath);
                }
                var(success, downloadedFilePath) = await MinersDownloadManager.DownloadFileWebClientAsync(url, downloadRootPath, $"nhm_windows_updater_{ApplicationStateManager.OnlineVersion}", downloadProgress, ApplicationStateManager.ExitApplication.Token);

                if (!success || ApplicationStateManager.ExitApplication.Token.IsCancellationRequested)
                {
                    return;
                }

                // stop devices
                ApplicationStateManager.StopAllDevice();

                using (var updater = new Process())
                {
                    updater.StartInfo.UseShellExecute = false;
                    updater.StartInfo.FileName        = downloadedFilePath;
                    updater.Start();
                }
            } catch (Exception ex)
            {
                Logger.Error("UpdateHelpers", $"Updating failed: {ex.Message}");
            }
        }
Ejemplo n.º 2
0
        private async void UpdaterBtn_Click(object sender, EventArgs e)
        {
            UpdaterBtn.Enabled = false;
            GithubBtn.Enabled  = false;
            ProgressBarVisible = true;
            try
            {
                var progressDownload = new Progress <(string loadMessageText, int perc)>(p =>
                {
                    progressBar1.Value = p.perc;
                    label1.Text        = p.loadMessageText;
                });
                IProgress <(string loadMessageText, int prog)> progress = progressDownload;
                var downloadProgress = new Progress <int>(perc => progress?.Report((Translations.Tr($"Downloading updater: %{perc}"), perc)));

                var url = ApplicationStateManager.GetNewVersionUpdaterUrl();
                var downloadRootPath = Path.GetTempPath();
                var(success, downloadedFilePath) = await MinersDownloadManager.DownloadFileWebClientAsync(url, downloadRootPath, $"nhm_windows_updater_{ApplicationStateManager.OnlineVersion}", downloadProgress, ApplicationStateManager.ExitApplication.Token);

                if (!success || ApplicationStateManager.ExitApplication.Token.IsCancellationRequested)
                {
                    return;
                }

                // stop devices
                ApplicationStateManager.StopAllDevice();

                using (var updater = new Process())
                {
                    updater.StartInfo.UseShellExecute = false;
                    updater.StartInfo.FileName        = downloadedFilePath;
                    updater.Start();
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Updater", $"Updating failed: {ex.Message}");
            }

            ProgressBarVisible = false;
            UpdaterBtn.Enabled = true;
            GithubBtn.Enabled  = true;

            Close();
        }