public override int Execute() { bool usedRollback = !string.IsNullOrWhiteSpace(_fromRollbackDefinition); if (_printDownloadLinkOnly) { Reporter.WriteLine(string.Format(LocalizableStrings.ResolvingPackageUrls, string.Join(", ", _workloadIds))); var packageUrls = GetPackageDownloadUrlsAsync(_workloadIds.Select(id => new WorkloadId(id)), _skipManifestUpdate, _includePreviews).GetAwaiter().GetResult(); Reporter.WriteLine("==allPackageLinksJsonOutputStart=="); Reporter.WriteLine(JsonSerializer.Serialize(packageUrls)); Reporter.WriteLine("==allPackageLinksJsonOutputEnd=="); } else if (!string.IsNullOrWhiteSpace(_downloadToCacheOption)) { try { DownloadToOfflineCacheAsync(_workloadIds.Select(id => new WorkloadId(id)), new DirectoryPath(_downloadToCacheOption), _skipManifestUpdate, _includePreviews).Wait(); } catch (Exception e) { _workloadInstaller.Shutdown(); throw new GracefulException(string.Format(LocalizableStrings.WorkloadCacheDownloadFailed, e.Message), e, isUserError: false); } } else if (_skipManifestUpdate && usedRollback) { throw new GracefulException(string.Format(LocalizableStrings.CannotCombineSkipManifestAndRollback, WorkloadInstallCommandParser.SkipManifestUpdateOption.Name, WorkloadInstallCommandParser.FromRollbackFileOption.Name, WorkloadInstallCommandParser.SkipManifestUpdateOption.Name, WorkloadInstallCommandParser.FromRollbackFileOption.Name), isUserError: true); } else { try { InstallWorkloads( _workloadIds.Select(id => new WorkloadId(id)), _skipManifestUpdate, _includePreviews, string.IsNullOrWhiteSpace(_fromCacheOption) ? null : new DirectoryPath(_fromCacheOption)); } catch (Exception e) { _workloadInstaller.Shutdown(); // Don't show entire stack trace throw new GracefulException(string.Format(LocalizableStrings.WorkloadInstallationFailed, e.Message), e, isUserError: false); } } return(_workloadInstaller.ExitCode); }
public override int Execute() { try { _reporter.WriteLine(); var workloadIds = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(new SdkFeatureBand(_sdkVersion)); _reporter.WriteLine(string.Format(LocalizableStrings.RepairingWorkloads, string.Join(" ", workloadIds))); ReinstallWorkloadsBasedOnCurrentManifests(workloadIds, new SdkFeatureBand(_sdkVersion)); if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { _workloadInstaller.GetPackInstaller().GarbageCollectInstalledWorkloadPacks(); } _reporter.WriteLine(); _reporter.WriteLine(string.Format(LocalizableStrings.RepairSucceeded, string.Join(" ", workloadIds))); _reporter.WriteLine(); } catch (Exception e) { // Don't show entire stack trace throw new GracefulException(string.Format(LocalizableStrings.WorkloadRepairFailed, e.Message), e); } finally { _workloadInstaller.Shutdown(); } return(_workloadInstaller.ExitCode); }
public override int Execute() { try { Reporter.WriteLine(); var featureBand = new SdkFeatureBand(_sdkVersion); var installedWorkloads = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(featureBand); var unrecognizedWorkloads = _workloadIds.Where(workloadId => !installedWorkloads.Contains(workloadId)); if (unrecognizedWorkloads.Any()) { throw new Exception(string.Format(LocalizableStrings.WorkloadNotInstalled, string.Join(" ", unrecognizedWorkloads))); } foreach (var workloadId in _workloadIds) { Reporter.WriteLine(string.Format(LocalizableStrings.RemovingWorkloadInstallationRecord, workloadId)); _workloadInstaller.GetWorkloadInstallationRecordRepository() .DeleteWorkloadInstallationRecord(workloadId, featureBand); } if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { var installer = _workloadInstaller.GetPackInstaller(); installer.GarbageCollectInstalledWorkloadPacks(); } else { var installer = _workloadInstaller.GetWorkloadInstaller(); foreach (var workloadId in _workloadIds) { installer.UninstallWorkload(workloadId); } } Reporter.WriteLine(); Reporter.WriteLine(string.Format(LocalizableStrings.UninstallSucceeded, string.Join(" ", _workloadIds))); Reporter.WriteLine(); } catch (Exception e) { _workloadInstaller.Shutdown(); // Don't show entire stack trace throw new GracefulException(string.Format(LocalizableStrings.WorkloadUninstallFailed, e.Message), e, isUserError: false); } return(_workloadInstaller.ExitCode); }
public override int Execute() { try { Reporter.WriteLine(); var workloadIds = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(new SdkFeatureBand(_sdkVersion)); if (!workloadIds.Any()) { Reporter.WriteLine(LocalizableStrings.NoWorkloadsToRepair); return(0); } Reporter.WriteLine(string.Format(LocalizableStrings.RepairingWorkloads, string.Join(" ", workloadIds))); ReinstallWorkloadsBasedOnCurrentManifests(workloadIds, new SdkFeatureBand(_sdkVersion)); WorkloadInstallCommand.TryRunGarbageCollection(_workloadInstaller, Reporter, Verbosity); Reporter.WriteLine(); Reporter.WriteLine(string.Format(LocalizableStrings.RepairSucceeded, string.Join(" ", workloadIds))); Reporter.WriteLine(); } catch (Exception e) { // Don't show entire stack trace throw new GracefulException(string.Format(LocalizableStrings.WorkloadRepairFailed, e.Message), e, isUserError: false); } finally { _workloadInstaller.Shutdown(); } return(_workloadInstaller.ExitCode); }