private bool TryRunInstallerForAsset(string assetId, out int installerExitCode, out string error)
        {
            error             = null;
            installerExitCode = 0;

            bool   installerIsRun = false;
            string path;
            string installerArgs;

            if (this.TryGetLocalInstallerPath(assetId, out path, out installerArgs))
            {
                if (!this.dryRun)
                {
                    string logFilePath = ScalarEnlistment.GetNewLogFileName(
                        ProductUpgraderInfo.GetLogDirectoryPath(),
                        Path.GetFileNameWithoutExtension(path),
                        this.UpgradeInstanceId,
                        this.fileSystem);

                    string args     = installerArgs + " /Log=" + logFilePath;
                    string certCN   = null;
                    string issuerCN = null;
                    switch (assetId)
                    {
                    case ScalarAssetId:
                    {
                        certCN   = ScalarSigner;
                        issuerCN = ScalarCertIssuer;
                        break;
                    }

                    case GitAssetId:
                    {
                        certCN   = GitSigner;
                        issuerCN = GitCertIssuer;
                        break;
                    }
                    }

                    this.RunInstaller(path, args, certCN, issuerCN, out installerExitCode, out error);

                    if (installerExitCode != 0 && string.IsNullOrEmpty(error))
                    {
                        error = assetId + " installer failed. Error log: " + logFilePath;
                    }
                }

                installerIsRun = true;
            }
            else
            {
                error = "Could not find downloaded installer for " + assetId;
            }

            return(installerIsRun);
        }
        protected virtual bool TryDownloadAsset(Asset asset, out string errorMessage)
        {
            errorMessage = null;

            string    downloadPath = ProductUpgraderInfo.GetAssetDownloadsPath();
            string    localPath    = Path.Combine(downloadPath, asset.Name);
            WebClient webClient    = new WebClient();

            try
            {
                webClient.DownloadFile(asset.DownloadURL, localPath);
                asset.LocalPath = localPath;
            }
            catch (WebException webException)
            {
                errorMessage = "Download error: " + webException.Message;
                this.TraceException(webException, nameof(this.TryDownloadAsset), $"Error downloading asset {asset.Name}.");
                return(false);
            }

            return(true);
        }
Exemple #3
0
 public void DeleteAllInstallerDownloads()
 {
     try
     {
         this.fileSystem.DeleteDirectory(GetAssetDownloadsPath());
     }
     catch (Exception ex)
     {
         if (this.tracer != null)
         {
             this.tracer.RelatedError($"{nameof(this.DeleteAllInstallerDownloads)}: Could not remove directory: {ProductUpgraderInfo.GetAssetDownloadsPath()}.{ex.ToString()}");
         }
     }
 }