Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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);
        }