Ejemplo n.º 1
0
        public override void InstallPackage(Stream packageStream)
        {
            lock (thisLock)
            {
                if (!Exists)
                {
                    throw new DatabaseNotFoundException($"Local Database not found at '{localDatabasePath}'");
                }

                var package = PackageReader.GetManifestFromPackageStream(packageStream);

                var localDatabaseConfig = GetLocalDatabaseConfig();

                var installedPackage = localDatabaseConfig.Packages.SingleOrDefault(p => p.Name == package.Name);
                if (installedPackage != null)
                {
                    if (installedPackage.Version != package.Version)
                    {
                        var p = packageCache.GetPackages().FindByNameAndVersion(new Package {
                            Name = installedPackage.Name, Version = installedPackage.Version
                        });
                        if (p == null)
                        {
                            throw new Exception($"Old Package '{installedPackage.Name}' Version:'{installedPackage.Version}' not found!");
                        }

                        UninstallPackage(p);
                    }
                }

                localDatabaseConfig.Packages.Add(new LocalDatabasePackageInfo {
                    Name = package.Name, Version = package.Version
                });
                localDatabaseConfig.Save(localDatabaseConfigFile);

                var files = packageInstaller.InstallPackageStream(packageStream, WoTHome);
                packageCache.AddPackage(package, files);
            }
        }