public static async Task LoadUpdateInfo(LauncherVersionInfo launcherVersionInfo) { var versionService = new LauncherVersionService(); var newVersion = await versionService.GetLatestVersion(); launcherVersionInfo.CurrentVersion = Assembly.GetEntryAssembly().GetName().Version.ToString(); launcherVersionInfo.NewVersion = newVersion.Version.ToString(); launcherVersionInfo.ChangeLog = await GetChangeLog(); }
public static async Task DownloadAndInstallUpdate(bool isSteam = false, IProgress <int> progress = null, CancellationToken ct = default(CancellationToken)) { Misc.CleanUpFiles(Directory.GetCurrentDirectory(), "*.old"); var versionService = new LauncherVersionService(); var newVersion = await versionService.GetLatestVersion().ConfigureAwait(false); progress?.Report(3); if (newVersion.Version <= Assembly.GetExecutingAssembly().GetName().Version) { return; } ct.ThrowIfCancellationRequested(); //Download File progress?.Report(5); var tempFileName = Path.GetTempFileName(); try { var downloadFileAsync = new SimpleFileDownloader(newVersion.Url, tempFileName); if (progress != null) { downloadFileAsync.ProgressChanged += (sender, args) => { progress.Report(Convert.ToInt32(Math.Floor(70 * (downloadFileAsync.DownloadProgress / 100)))); } } ; await downloadFileAsync.DownloadAsync(ct); } catch (AggregateException) { if (File.Exists(tempFileName)) { File.Delete(tempFileName); } throw; } //Extract File progress?.Report(65); Progress <double> extractProgress = null; if (progress != null) { extractProgress = new Progress <double>(); extractProgress.ProgressChanged += (o, ea) => { progress.Report(70 + Convert.ToInt32(Math.Floor(20 * (ea / 100)))); }; } var tempDir = Path.Combine(Path.GetTempPath(), $"Celeste_Launcher_v{newVersion.Version}"); if (Directory.Exists(tempDir)) { Misc.CleanUpFiles(tempDir, "*.*"); } try { await ZipUtils.ExtractZipFile(tempFileName, tempDir, extractProgress, ct); } catch (AggregateException) { Misc.CleanUpFiles(tempDir, "*.*"); throw; } finally { if (File.Exists(tempFileName)) { File.Delete(tempFileName); } } //Move File progress?.Report(90); var destinationDir = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar; try { Misc.MoveFiles(tempDir, destinationDir); } finally { Misc.CleanUpFiles(tempDir, "*.*"); } //isSteam Version if (isSteam) { progress?.Report(95); Steam.ConvertToSteam(destinationDir); } //Clean Old File progress?.Report(97); Misc.CleanUpFiles(Directory.GetCurrentDirectory(), "*.old"); // progress?.Report(100); }