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}"); } }
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(); }