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