public void UninstallPackage([NotNull] string fastPackageReference) { var requirements = ParseReference(fastPackageReference); bool machineWide = _request.OptionKeys.Contains(MachineWideKey); using (var integrationManager = new IntegrationManager(Handler, machineWide)) integrationManager.RemoveApp(integrationManager.AppList[requirements.InterfaceUri]); }
public void UninstallPackage(string fastPackageReference) { if (MachineWide && !WindowsUtils.IsAdministrator) { throw new NotAdminException(Resources.MustBeAdminForMachineWide); } var requirements = ParseReference(fastPackageReference); using var integrationManager = new IntegrationManager(Config, Handler, MachineWide); integrationManager.RemoveApp(integrationManager.AppList[requirements.InterfaceUri]); }
/// <inheritdoc/> protected override ExitCode ExecuteHelper() { try { IntegrationManager.RemoveApp(IntegrationManager.AppList[InterfaceUri]); } #region Sanity checks catch (KeyNotFoundException ex) { // Wrap exception since only certain exception types are allowed throw new IOException(ex.Message, ex); } #endregion return(ExitCode.OK); }
/// <inheritdoc/> protected override ExitCode ExecuteHelper() { var appEntry = IntegrationManager.AppList.GetEntry(InterfaceUri); if (appEntry == null) { Log.Warn(string.Format(Resources.AliasNotFound, InterfaceUri)); return(ExitCode.NoChanges); } if (appEntry.AccessPoints != null) { CheckInstallBase(); } foreach (var hook in appEntry.CapabilityLists.CompatibleCapabilities().OfType <RemoveHook>()) { var process = StartRemoveHook(hook); if (process == null) { continue; } try { process.WaitForSuccess(); } catch (ExitCodeException ex) { Log.Info($"Remove process for {InterfaceUri} cancelled by remove hook {hook.ID} with exit code {ex.ExitCode}"); return((ExitCode)ex.ExitCode); } } IntegrationManager.RemoveApp(appEntry); if (ZeroInstallInstance.IsLibraryMode && !ExistingDesktopIntegration() && (!ZeroInstallInstance.IsMachineWide || !ExistingDesktopIntegration(machineWide: true))) { Log.Info("Last app removed, auto-removing library mode Zero Install instance"); StartCommandBackground(Self.Name, Self.Remove.Name, "--batch"); } return(ExitCode.OK); }
public void RemoveApp() { var target = new FeedTarget(FeedTest.Test1Uri, new Feed { Name = "Test" }); var appEntry = _integrationManager.AddApp(target); // Inject access point into AppEntry (without running integration) using var unapplyFlag = new TemporaryFlagFile("0install-test-flag"); appEntry.AccessPoints = new AccessPointList { Entries = { new MockAccessPoint { UnapplyFlagPath = unapplyFlag } } }; _integrationManager.RemoveApp(appEntry); _integrationManager.AppList.Entries.Should().BeEmpty(); unapplyFlag.Set.Should().BeTrue(because: "Access points should be unapplied when their AppEntry is removed"); _integrationManager.Invoking(x => x.RemoveApp(appEntry)) .Should().NotThrow(because: "Allow multiple removals of applications."); }
/// <inheritdoc/> protected override ExitCode ExecuteHelper() { try { IntegrationManager.RemoveApp(IntegrationManager.AppList[InterfaceUri]); } #region Sanity checks catch (KeyNotFoundException ex) { // Wrap exception since only certain exception types are allowed throw new IOException(ex.Message, ex); } #endregion if (ZeroInstallInstance.IsLibraryMode && !ExistingDesktopIntegration() && (!ZeroInstallInstance.IsMachineWide || !ExistingDesktopIntegration(machineWide: true))) { Log.Info("Last app removed, auto-removing library mode Zero Install instance"); StartCommandBackground(Self.Name, Self.Remove.Name, "--batch"); } return(ExitCode.OK); }