private void TestPackage(IPackage package)
        {
            var destFile = package.FileName();

            using (var stream = PackageBuilder.CreatePackage(package, GetFiles(package)))
            {
                using (var fileStream = File.Create(destFile))
                {
                    stream.Seek(0, SeekOrigin.Begin);
                    stream.CopyTo(fileStream);
                }
            }

            Assert.IsTrue(File.Exists(destFile));

            var package2 = PackageReader.GetManifestFromPackageStream(File.OpenRead(destFile));

            Assert.IsTrue((Package)package == (Package)package2);
        }
Exemple #2
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);
            }
        }