private bool InstallOrUninstall(IList <string> installerIds, IElevationContext elevationContext, IProgressMonitor progressMonitor, InstallerOperation operation) { if (progressMonitor == null) { throw new ArgumentNullException("progressMonitor"); } var filteredInstallerHandles = FilterInstallers(installerIds); using (progressMonitor.BeginTask(operation == InstallerOperation.Install ? "Installing components." : "Uninstalling components.", filteredInstallerHandles.Count + 1)) { if (progressMonitor.IsCanceled) { return(false); } if (elevationContext != null || elevationManager.HasElevatedPrivileges || !IsElevationRequired(filteredInstallerHandles)) { return(InstallOrUninstallWithElevationContext(filteredInstallerHandles, elevationContext, progressMonitor, operation)); } return(elevationManager.TryElevate( newElevationContext => InstallOrUninstallWithElevationContext(filteredInstallerHandles, newElevationContext, progressMonitor, operation), "Administrative access required to install or uninstall certain components.")); } }
private static bool InstallOrUninstallWithElevationContext(IEnumerable <ComponentHandle <IInstaller, InstallerTraits> > installerHandles, IElevationContext elevationContext, IProgressMonitor progressMonitor, InstallerOperation operation) { foreach (var installerHandle in installerHandles) { if (progressMonitor.IsCanceled) { return(false); } IProgressMonitor subProgressMonitor = progressMonitor.CreateSubProgressMonitor(1); if (elevationContext != null && installerHandle.GetTraits().RequiresElevation) { elevationContext.Execute(InstallerElevatedCommand.ElevatedCommandId, new InstallerElevatedCommand.Arguments(installerHandle.Id, operation), subProgressMonitor); } else { IInstaller installer = installerHandle.GetComponent(); if (operation == InstallerOperation.Install) { installer.Install(progressMonitor.CreateSubProgressMonitor(1)); } else { installer.Uninstall(progressMonitor.CreateSubProgressMonitor(1)); } } } return(true); }
private static bool InstallOrUninstallWithElevationContext(IEnumerable<ComponentHandle<IInstaller, InstallerTraits>> installerHandles, IElevationContext elevationContext, IProgressMonitor progressMonitor, InstallerOperation operation) { foreach (var installerHandle in installerHandles) { if (progressMonitor.IsCanceled) return false; IProgressMonitor subProgressMonitor = progressMonitor.CreateSubProgressMonitor(1); if (elevationContext != null && installerHandle.GetTraits().RequiresElevation) { elevationContext.Execute(InstallerElevatedCommand.ElevatedCommandId, new InstallerElevatedCommand.Arguments(installerHandle.Id, operation), subProgressMonitor); } else { IInstaller installer = installerHandle.GetComponent(); if (operation == InstallerOperation.Install) installer.Install(progressMonitor.CreateSubProgressMonitor(1)); else installer.Uninstall(progressMonitor.CreateSubProgressMonitor(1)); } } return true; }
private void RestorePackages() { foreach (var package in this.project.PackageRepository.GetAll()) { this.Operation = InstallerOperation.Install; this.PerformOperation(package); } }
/// <summary> /// Creates the arguments. /// </summary> /// <param name="installerId">The installer id.</param> /// <param name="installerOperation">The requested installer operation.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="installerId"/> is null.</exception> public Arguments(string installerId, InstallerOperation installerOperation) { if (installerId == null) { throw new ArgumentNullException("installerId"); } this.installerId = installerId; this.installerOperation = installerOperation; }
private async Task <BuildResult?> BuildData(string id, InstallerOperation operation) { try { var file = await operation.BuilderFunc(s => _dataServer.Value.Send(operation.EndpointId, NetworkMessage.Create(NetworkOperation.Message, Encoding.UTF8.GetBytes(s))), id, operation.EndpointId); if (file == null) { SendDeny(operation.EndpointId); } return(file); } catch (Exception e) { LogMessage("Error on Transmiting Data {Id} {Error}", id, e.Message); SendDeny(operation.EndpointId); } return(null); }
private bool InstallOrUninstall(IList<string> installerIds, IElevationContext elevationContext, IProgressMonitor progressMonitor, InstallerOperation operation) { if (progressMonitor == null) throw new ArgumentNullException("progressMonitor"); var filteredInstallerHandles = FilterInstallers(installerIds); using (progressMonitor.BeginTask(operation == InstallerOperation.Install ? "Installing components." : "Uninstalling components.", filteredInstallerHandles.Count + 1)) { if (progressMonitor.IsCanceled) return false; if (elevationContext != null || elevationManager.HasElevatedPrivileges || ! IsElevationRequired(filteredInstallerHandles)) { return InstallOrUninstallWithElevationContext(filteredInstallerHandles, elevationContext, progressMonitor, operation); } return elevationManager.TryElevate( newElevationContext => InstallOrUninstallWithElevationContext(filteredInstallerHandles, newElevationContext, progressMonitor, operation), "Administrative access required to install or uninstall certain components."); } }