private static GithubRelease.Asset GetAssetMatchingRunningVersion(List <GithubRelease.Asset> assets) { GithubRelease.Asset releaseAsset = null; if (DragonUtil.IsRunningPortable()) { Console.WriteLine("Portable version"); releaseAsset = assets.Find(asset => asset.name.Contains("Portable")); } else { if (DragonUtil.CurrentOperatingSystem.IsWindows()) { releaseAsset = assets.Find(asset => asset.name.Contains("Windows")); } else if (DragonUtil.CurrentOperatingSystem.IsMacOS()) { releaseAsset = assets.Find(asset => asset.name.Contains("macOS")); } else if (DragonUtil.CurrentOperatingSystem.IsLinux()) { releaseAsset = assets.Find(asset => asset.name.Contains("linux")); } } return(releaseAsset); }
public static async Task UpdateApp(GithubRelease release, IProgress <SimpleTaskProgress> taskProgress) { Console.WriteLine("Starting update..."); List <GithubRelease.Asset> assets = release.assets.Where(asset => asset.name.Contains("GUI")).ToList(); GithubRelease.Asset downloadAsset = GetAssetMatchingRunningVersion(assets); string downloadUrl = downloadAsset.browser_download_url; string zipPath = Directory.GetParent(DragonUtil.CurrentDirectory).FullName + "/" + downloadAsset.name; string updaterFolder = Directory.GetParent(DragonUtil.CurrentDirectory).FullName + "/CoreUpdater"; if (downloadUrl == null) { return; } if (File.Exists(zipPath)) { File.Delete(zipPath); } Console.WriteLine("Downloading " + downloadUrl + "..."); var progress = new Progress <SimpleTaskProgress>(); progress.ProgressChanged += (sender, simpleTaskProgress) => taskProgress.Report(simpleTaskProgress); await DragonUtil.DownloadFile(downloadUrl, zipPath, "MarkdownToRW_Converter", downloadAsset.size / 1024, progress); // extract updater zip to parent folder ExtractZipToFolder(DragonUtil.CurrentDirectory + "/CoreUpdater.zip", updaterFolder); // run updater, point to this folder & downloaded zip if (DragonUtil.CurrentOperatingSystem.IsMacOS() || DragonUtil.CurrentOperatingSystem.IsLinux()) { await DragonUtil.TryToMakeExecutable(updaterFolder + "/CoreUpdater"); } RunCoreUpdater(updaterFolder, zipPath); // close app Environment.Exit(0); }