Esempio n. 1
0
        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;
    }