Beispiel #1
0
        public IEnumerable <PackageManagerMessage> UninstallPackage(IPackage package)
        {
            List <IModule>             modules = new List <IModule>();
            IEnumerable <IPackageFile> files   = package.GetLibFiles().Where(x => x.TargetFramework == null || x.TargetFramework == mPackageManager.TargetFramework);

            foreach (IPackageFile file in files)
            {
                string assemblyName = Path.GetFileNameWithoutExtension(file.EffectivePath);
                IEnumerable <IModule> candidates = mModuleProvider.GetModules().Where(x => x.GetType().Assembly.GetName().Name == assemblyName);
                modules.AddRange(candidates);
            }

            foreach (IModule module in modules)
            {
                module.Remove();
            }
            mModuleStatusManager.RemoveEntriesForModules(modules);
            mModuleDataVersionManager.RemoveEntriesForModules(modules);

            IEnumerable <PackageManagerMessage> messages = mPackageManager.UninstallPackage(package);

            if (!messages.Any(x => x.Level == MessageLevel.Error))
            {
                RestartApplication();
            }

            return(messages);
        }