public void InstallWorkloads(IEnumerable <WorkloadId> workloadIds, bool skipManifestUpdate = false, bool includePreviews = false, DirectoryPath?offlineCache = null) { _reporter.WriteLine(); var featureBand = new SdkFeatureBand(string.Join('.', _sdkVersion.Major, _sdkVersion.Minor, _sdkVersion.SdkFeatureBand)); IEnumerable <(ManifestId, ManifestVersion, ManifestVersion)> manifestsToUpdate = new List <(ManifestId, ManifestVersion, ManifestVersion)>(); if (!skipManifestUpdate) { // Update currently installed workloads var installedWorkloads = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(featureBand); workloadIds = workloadIds.Concat(installedWorkloads).Distinct(); _workloadManifestUpdater.UpdateAdvertisingManifestsAsync(includePreviews, offlineCache).Wait(); manifestsToUpdate = _workloadManifestUpdater.CalculateManifestUpdates(); } InstallWorkloadsWithInstallRecord(workloadIds, featureBand, manifestsToUpdate, offlineCache); if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { _workloadInstaller.GetPackInstaller().GarbageCollectInstalledWorkloadPacks(); } _reporter.WriteLine(); _reporter.WriteLine(string.Format(LocalizableStrings.InstallationSucceeded, string.Join(" ", workloadIds))); _reporter.WriteLine(); }
internal UpdateAvailableEntry[] GetUpdateAvailable(IEnumerable <WorkloadId> installedList) { HashSet <WorkloadId> installedWorkloads = installedList.ToHashSet(); Task.Run(() => _workloadManifestUpdater.UpdateAdvertisingManifestsAsync(_includePreviews)).Wait(); IEnumerable <(ManifestId manifestId, ManifestVersion existingVersion, ManifestVersion newVersion, Dictionary <WorkloadId, WorkloadDefinition> Workloads)> manifestsToUpdate = _workloadManifestUpdater.CalculateManifestUpdates(); List <UpdateAvailableEntry> updateList = new(); foreach ((ManifestId _, ManifestVersion existingVersion, ManifestVersion newVersion, Dictionary <WorkloadId, WorkloadDefinition> workloads) in manifestsToUpdate) { foreach ((WorkloadId WorkloadId, WorkloadDefinition workloadDefinition) in workloads) { if (installedWorkloads.Contains(new WorkloadId(WorkloadId.ToString()))) { updateList.Add(new UpdateAvailableEntry(existingVersion.ToString(), newVersion.ToString(), workloadDefinition.Description, WorkloadId.ToString())); } } } return(updateList.ToArray()); }
public void InstallWorkloads(IEnumerable <WorkloadId> workloadIds, bool skipManifestUpdate = false, bool includePreviews = false, DirectoryPath?offlineCache = null) { Reporter.WriteLine(); var manifestsToUpdate = Enumerable.Empty <ManifestVersionUpdate> (); if (!skipManifestUpdate) { if (Verbosity != VerbosityOptions.quiet && Verbosity != VerbosityOptions.q) { Reporter.WriteLine(LocalizableStrings.CheckForUpdatedWorkloadManifests); } // Update currently installed workloads var installedWorkloads = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(_sdkFeatureBand); var previouslyInstalledWorkloads = installedWorkloads.Intersect(workloadIds); if (previouslyInstalledWorkloads.Any()) { Reporter.WriteLine(string.Format(LocalizableStrings.WorkloadAlreadyInstalled, string.Join(" ", previouslyInstalledWorkloads)).Yellow()); } workloadIds = workloadIds.Concat(installedWorkloads).Distinct(); _workloadManifestUpdater.UpdateAdvertisingManifestsAsync(includePreviews, offlineCache).Wait(); manifestsToUpdate = string.IsNullOrWhiteSpace(_fromRollbackDefinition) ? _workloadManifestUpdater.CalculateManifestUpdates().Select(m => m.manifestUpdate) : _workloadManifestUpdater.CalculateManifestRollbacks(_fromRollbackDefinition); } InstallWorkloadsWithInstallRecord(workloadIds, _sdkFeatureBand, manifestsToUpdate, offlineCache); TryRunGarbageCollection(_workloadInstaller, Reporter, Verbosity, offlineCache); Reporter.WriteLine(); Reporter.WriteLine(string.Format(LocalizableStrings.InstallationSucceeded, string.Join(" ", workloadIds))); Reporter.WriteLine(); }
public void UpdateWorkloads(bool includePreviews = false, DirectoryPath?offlineCache = null) { _reporter.WriteLine(); var featureBand = new SdkFeatureBand(string.Join('.', _sdkVersion.Major, _sdkVersion.Minor, _sdkVersion.SdkFeatureBand)); var workloadIds = GetUpdatableWorkloads(); _workloadManifestUpdater.UpdateAdvertisingManifestsAsync(includePreviews, offlineCache).Wait(); var manifestsToUpdate = string.IsNullOrWhiteSpace(_fromRollbackDefinition) ? _workloadManifestUpdater.CalculateManifestUpdates().Select(m => (m.manifestId, m.existingVersion, m.newVersion)) : _workloadManifestUpdater.CalculateManifestRollbacks(_fromRollbackDefinition); UpdateWorkloadsWithInstallRecord(workloadIds, featureBand, manifestsToUpdate, offlineCache); if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { _workloadInstaller.GetPackInstaller().GarbageCollectInstalledWorkloadPacks(); } _reporter.WriteLine(); _reporter.WriteLine(string.Format(LocalizableStrings.UpdateSucceeded, string.Join(" ", workloadIds))); _reporter.WriteLine(); }
public void UpdateWorkloads(bool includePreviews = false) { _reporter.WriteLine(); var featureBand = new SdkFeatureBand(string.Join('.', _sdkVersion.Major, _sdkVersion.Minor, _sdkVersion.SdkFeatureBand)); var workloadIds = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(featureBand); _workloadManifestUpdater.UpdateAdvertisingManifestsAsync(includePreviews).Wait(); var manifestsToUpdate = _workloadManifestUpdater.CalculateManifestUpdates(); UpdateWorkloadsWithInstallRecord(workloadIds, featureBand, manifestsToUpdate); if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { _workloadInstaller.GetPackInstaller().GarbageCollectInstalledWorkloadPacks(); } _reporter.WriteLine(); _reporter.WriteLine(string.Format(LocalizableStrings.UpdateSucceeded, string.Join(" ", workloadIds))); _reporter.WriteLine(); }
public void UpdateWorkloads(bool includePreviews = false, DirectoryPath?offlineCache = null) { _reporter.WriteLine(); var featureBand = new SdkFeatureBand(_sdkVersion); var workloadIds = GetUpdatableWorkloads(); _workloadManifestUpdater.UpdateAdvertisingManifestsAsync(includePreviews, offlineCache).Wait(); var manifestsToUpdate = string.IsNullOrWhiteSpace(_fromRollbackDefinition) ? _workloadManifestUpdater.CalculateManifestUpdates().Select(m => (m.manifestId, m.existingVersion, m.newVersion)) : _workloadManifestUpdater.CalculateManifestRollbacks(_fromRollbackDefinition); UpdateWorkloadsWithInstallRecord(workloadIds, featureBand, manifestsToUpdate, offlineCache); WorkloadInstallCommand.TryRunGarbageCollection(_workloadInstaller, _reporter, _verbosity, offlineCache); _workloadManifestUpdater.DeleteUpdatableWorkloadsFile(); _reporter.WriteLine(); _reporter.WriteLine(string.Format(LocalizableStrings.UpdateSucceeded, string.Join(" ", workloadIds))); _reporter.WriteLine(); }
public void InstallWorkloads(IEnumerable <WorkloadId> workloadIds, bool skipManifestUpdate = false, bool includePreviews = false, DirectoryPath?offlineCache = null) { _reporter.WriteLine(); IEnumerable <(ManifestId, ManifestVersion, ManifestVersion)> manifestsToUpdate = new List <(ManifestId, ManifestVersion, ManifestVersion)>(); if (!skipManifestUpdate) { // Update currently installed workloads var installedWorkloads = _workloadInstaller.GetWorkloadInstallationRecordRepository().GetInstalledWorkloads(_sdkFeatureBand); workloadIds = workloadIds.Concat(installedWorkloads).Distinct(); _workloadManifestUpdater.UpdateAdvertisingManifestsAsync(includePreviews, offlineCache).Wait(); manifestsToUpdate = _workloadManifestUpdater.CalculateManifestUpdates().Select(m => (m.manifestId, m.existingVersion, m.newVersion)); } InstallWorkloadsWithInstallRecord(workloadIds, _sdkFeatureBand, manifestsToUpdate, offlineCache); TryRunGarbageCollection(_workloadInstaller, _reporter, _verbosity, offlineCache); _reporter.WriteLine(); _reporter.WriteLine(string.Format(LocalizableStrings.InstallationSucceeded, string.Join(" ", workloadIds))); _reporter.WriteLine(); }