protected IDisposable SaveDescriptorOnSuccess(FileBased <IPackageDescriptor> descriptor) { bool packagesChanged = false; PackageChanged change = (a, b, c, d) => { packagesChanged = true; return(Enumerable.Empty <object>()); }; PackageUpdated update = (a, b, c, d, e) => { packagesChanged = true; return(Enumerable.Empty <object>()); }; var listener = PackageManager.Monitor(change, change, update); return(new ActionOnDispose(() => { listener.Dispose(); if (Successful && packagesChanged) { descriptor.Save(); if (HostEnvironment.Descriptor != descriptor.Value) { HostEnvironment.DescriptorFile.Touch(); } else { foreach (var file in HostEnvironment.ScopedDescriptors.Select(x => x.Value.File)) { file.Touch(); } } } })); }
public void Open(string contractName) { _catalog = AppExtensionCatalog.Open(contractName); _catalog.PackageInstalled += (s, e) => PackageInstalled?.Invoke(this, new AppExtensionPackageInstalledEventArgsWrapper(e)); _catalog.PackageUpdated += (s, e) => PackageUpdated?.Invoke(this, new AppExtensionPackageUpdatedEventArgsWrapper(e)); _catalog.PackageUninstalling += (s, e) => PackageUninstalling?.Invoke(this, new AppExtensionPackageUninstallingEventArgsWrapper(e)); _catalog.PackageUpdating += (s, e) => PackageUpdating?.Invoke(this, new AppExtensionPackageUpdatingEventArgsWrapper(e)); _catalog.PackageStatusChanged += (s, e) => PackageStatusChanged?.Invoke(this, new AppExtensionPackageStatusChangedEventArgsWrapper(e)); }
public static IDisposable Monitor(this IPackageManager manager, PackageChanged add = null, PackageChanged remove = null, PackageUpdated update = null) { if (add != null) manager.PackageAdded += add; if (remove != null) manager.PackageRemoved += remove; if (update != null) manager.PackageUpdated += update; return new ActionOnDispose(() => { if (add != null) manager.PackageAdded -= add; if (remove != null) manager.PackageRemoved -= remove; if (update != null) manager.PackageUpdated -= update; }); }
public static IDisposable Monitor(this IPackageManager manager, PackageChanged add = null, PackageChanged remove = null, PackageUpdated update = null) { if (add != null) { manager.PackageAdded += add; } if (remove != null) { manager.PackageRemoved += remove; } if (update != null) { manager.PackageUpdated += update; } return(new ActionOnDispose(() => { if (add != null) { manager.PackageAdded -= add; } if (remove != null) { manager.PackageRemoved -= remove; } if (update != null) { manager.PackageUpdated -= update; } })); }