Пример #1
0
        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();
                        }
                    }
                }
            }));
        }
Пример #2
0
        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;
     });
 }
Пример #4
0
 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;
         }
     }));
 }