Exemple #1
0
        public override void UninstallPackage(IPackage package)
        {
            lock (thisLock)
            {
                if (!Exists)
                {
                    throw new DatabaseNotFoundException($"Local Database not found at '{localDatabasePath}'");
                }

                var localDatabaseConfig = GetLocalDatabaseConfig();
                var installedPackage    = localDatabaseConfig.Packages.SingleOrDefault(p => p.Name == package.Name && p.Version == package.Version);
                if (installedPackage != null)
                {
                    try
                    {
                        using (var stream = packageCache.GetPackage(package))
                        {
                            packageInstaller.UninstallPackageStream(stream, WoTHome);
                        }

                        packageCache.RemovePackage(package);
                    }
                    catch (ArgumentException) { }
                    finally
                    {
                        localDatabaseConfig.Packages.Remove(installedPackage);
                        localDatabaseConfig.Save(localDatabaseConfigFile);
                    }

                    foreach (var p in localDatabaseConfig.Packages)
                    {
                        using (var stream = packageCache.GetPackage(new Package {
                            Name = p.Name, Version = p.Version
                        }))
                        {
                            packageInstaller.InstallPackageStream(stream, WoTHome);
                        }
                    }
                }
            }
        }