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); } } } } }