public PackageManifest GetManifest(string filename) { var manifest = new PackageManifest(); ZipReader reader; try { reader = new ZipReader(filename, Encoding.UTF8); } catch (Exception exception) { throw new InvalidOperationException("Failed to open package", exception); } string tempFileName = Path.GetTempFileName(); ZipEntry entry = reader.GetEntry("package.zip"); if (entry != null) { using (FileStream stream = File.Create(tempFileName)) { StreamUtil.Copy(entry.GetStream(), stream, 0x4000); } reader.Dispose(); reader = new ZipReader(tempFileName, Encoding.UTF8); } try { foreach (ZipEntry entry2 in reader.Entries) { var data = new ZipEntryData(entry2); var packageManifestEntry = ZipEntryDataParser.GetManifestEntry(data.Key); if (!(packageManifestEntry is PackageManifestEntryNotFound)) { manifest.Entries.Add(packageManifestEntry); } } } finally { reader.Dispose(); File.Delete(tempFileName); } return(manifest); }
public PackageManifest GetManifest(string filename) { var manifest = new PackageManifest(); ZipReader reader; try { reader = new ZipReader(filename, Encoding.UTF8); } catch (Exception exception) { throw new InvalidOperationException("Failed to open package", exception); } string tempFileName = Path.GetTempFileName(); ZipEntry entry = reader.GetEntry("package.zip"); if (entry != null) { using (FileStream stream = File.Create(tempFileName)) { StreamUtil.Copy(entry.GetStream(), stream, 0x4000); } reader.Dispose(); reader = new ZipReader(tempFileName, Encoding.UTF8); } try { foreach (ZipEntry entry2 in reader.Entries) { var data = new ZipEntryData(entry2); var packageManifestEntry = ZipEntryDataParser.GetManifestEntry(data.Key); if (! (packageManifestEntry is PackageManifestEntryNotFound)) { manifest.Entries.Add(packageManifestEntry); } } } finally { reader.Dispose(); File.Delete(tempFileName); } return manifest; }
public AntidotePackageDefinition GetSources() { var itemsIds = new List <AntidoteItemSourceDefinition>(); var filesInfo = new List <AntidoteFileSourceDefinition>(); ZipReader zipReader = new ZipReader(filename, Encoding.UTF8); string tempFileName = Path.GetTempFileName(); ZipEntry entry1 = zipReader.GetEntry("package.zip"); if (entry1 != null) { using (FileStream fileStream = File.Create(tempFileName)) StreamUtil.Copy(entry1.GetStream(), fileStream, 16384); zipReader.Dispose(); zipReader = new ZipReader(tempFileName, Encoding.UTF8); } try { foreach (ZipEntry entry2 in zipReader.Entries) { if (entry2.IsItem()) { itemsIds.Add((AntidoteItemSourceDefinition)entry2); } if (entry2.IsFile()) { string filePath = Path.Combine(HostingEnvironment.ApplicationHost.GetPhysicalPath(), entry2.GetFilePath()); filesInfo.Add(new AntidoteFileSourceDefinition { FileInfo = new FileInfo(filePath) }); } } return(new AntidotePackageDefinition { FilesInfo = filesInfo, ItemsId = itemsIds.Distinct() }); } finally { zipReader.Dispose(); File.Delete(tempFileName); } }
public AntidotePackageDefinition GetSources() { var itemsIds = new List<AntidoteItemSourceDefinition>(); var filesInfo = new List<AntidoteFileSourceDefinition>(); ZipReader zipReader = new ZipReader(filename, Encoding.UTF8); string tempFileName = Path.GetTempFileName(); ZipEntry entry1 = zipReader.GetEntry("package.zip"); if (entry1 != null) { using (FileStream fileStream = File.Create(tempFileName)) StreamUtil.Copy(entry1.GetStream(), fileStream, 16384); zipReader.Dispose(); zipReader = new ZipReader(tempFileName, Encoding.UTF8); } try { foreach (ZipEntry entry2 in zipReader.Entries) { if (entry2.IsItem()) { itemsIds.Add((AntidoteItemSourceDefinition)entry2); } if (entry2.IsFile()) { string filePath = Path.Combine(HostingEnvironment.ApplicationHost.GetPhysicalPath(), entry2.GetFilePath()); filesInfo.Add(new AntidoteFileSourceDefinition { FileInfo = new FileInfo(filePath) }); } } return new AntidotePackageDefinition { FilesInfo = filesInfo, ItemsId = itemsIds.Distinct() }; } finally { zipReader.Dispose(); File.Delete(tempFileName); } }
protected virtual ZipReader OpenPackageFile([NotNull] string fileName) { var zipReader = new ZipReader(fileName, Encoding.UTF8); var entry = zipReader.GetEntry("package.zip"); if (entry == null) { return(zipReader); } var tempFileName = Path.GetTempFileName(); using (var fileStream = File.Create(tempFileName)) { entry.GetStream().CopyTo(fileStream); } zipReader.Dispose(); return(new ZipReader(tempFileName, Encoding.UTF8)); }
/// <summary> /// /// </summary> /// <param name="packageFileName"></param> /// <returns></returns> private project ExtractPackageAndGetProjectInformation(string packageFileName) { project projectInformation = null; ZipReader reader = null; string tempFileName = string.Empty; try { reader = new ZipReader(packageFileName, Encoding.UTF8); tempFileName = Path.GetTempFileName(); ZipEntry entry = reader.GetEntry("package.zip"); if (entry != null) { using (FileStream stream = File.Create(tempFileName)) { StreamUtil.Copy(entry.GetStream(), stream, 0x4000); } reader.Dispose(); reader = new ZipReader(tempFileName, Encoding.UTF8); } // Get Project XML File entry = reader.GetEntry("installer/project"); using (MemoryStream memoryStream = new MemoryStream()) { StreamUtil.Copy(entry.GetStream(), memoryStream, 0x4000); // Let's go to start of stream memoryStream.Seek(0, SeekOrigin.Begin); // Convert XML to class // Package can contain list of // Items // Files XmlSerializer serializer = new XmlSerializer(typeof(project)); projectInformation = (project)serializer.Deserialize(memoryStream); } } catch (Exception ex) { projectInformation = null; Sitecore.Diagnostics.Log.Error("While extracting package and getting information something went wrong", ex, this); } finally { if (reader != null) reader.Dispose(); if (!string.IsNullOrEmpty(tempFileName)) File.Delete(tempFileName); } return projectInformation; }