Example #1
0
 /// <summary>
 /// Check if a new version is available on github. If it is download it.
 /// </summary>
 /// <param name="user">github user name</param>
 /// <param name="repository">github repository name</param>
 /// <param name="currentVersion">Version to compare against</param>
 /// <param name="destinationFile">destination name of the update file</param>
 /// <param name="logger">An optional logger.</param>
 /// <returns><see langword="true"/> if a new version is available, otherwise <see langword="false"/></returns>
 public static async Task <bool> CheckDownloadNewVersionAsync(string user, string repository, Version currentVersion, string destinationFile, Logger logger = null)
 {
     return(await Task.Run(async() =>
     {
         if (logger is null)
         {
             logger = new Logger(Path.ChangeExtension(destinationFile, ".log"));
         }
         var gitHub = new GitHubApi();
         try
         {
             var latestReleaseJson = await gitHub.GetLatestReleaseJSONAsync(user, repository);
             var version = GitHubApi.ParseVersion(latestReleaseJson);
             logger.Log($"Comparing {currentVersion} with latest version on github {version}");
             if (version > currentVersion)
             {
                 var updateUrl = GitHubApi.ParseDownloadUrl(latestReleaseJson);
                 //new version download
                 await gitHub.DownloadFileAsync(updateUrl, destinationFile);
                 return true;
             }
             return false;
         }
         catch (Exception e)
         {
             logger.Log(e.Message);
             return false;
         }
     }));
 }
Example #2
0
        private static async Task <string> DownloadInstallerAsync(this GitHubApi gitHub, string destination)
        {
            var latestReleaseJson = await gitHub.GetLatestReleaseJSONAsync(user, repo);

            var urlInstaller      = GitHubApi.ParseDownloadUrl(latestReleaseJson);
            var installerFileName = Path.Combine(destination, Path.GetFileName(urlInstaller));
            await gitHub.DownloadFileAsync(urlInstaller, installerFileName);

            return(installerFileName);
        }
Example #3
0
 /// <summary>
 /// Downloads and extracts the installer into the given directory
 /// </summary>
 /// <param name="destinationDir">Directory to extract the installer to.</param>
 /// <returns>The name of the installer, if all was successfull.</returns>
 public static async Task <string> DownloadExtractInstallerToAsync(string destinationDir)
 {
     return(await Task.Run(async() =>
     {
         var gitHub = new GitHubApi();
         try
         {
             var installerZip = await gitHub.DownloadInstallerAsync(destinationDir);
             var installerName = installerZip.ExtractInstaller(destinationDir);
             return installerName;
         }
         catch
         {
             return string.Empty;
         }
     }));
 }