Example #1
0
        public static PluginPackage FromDirectory(String directory)
        {
            var package = (PluginPackage)null;

            if (!File.Exists(Path.Combine(directory, "contents.xml")))
            {
                throw new FileNotFoundException("'contents.xml' is missing!", "contents.xml");
            }

            using (var stream = File.Open(Path.Combine(directory, "contents.xml"), FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var contents = PluginPackageContentsXml.FromStream(stream);

                package = new PluginPackage(contents.Id, contents.Name, contents.Version, contents.Target, contents.Type);
                foreach (var file in contents.Files)
                {
                    var path = Path.Combine(directory, file.Name);
                    if (!File.Exists(path))
                    {
                        throw new FileNotFoundException("The package file '" + file.Name + "' is missing!", file.Name);
                    }
                    package.files.Add(new PluginPackageFile(file.Name, File.ReadAllBytes(path)));
                }

                foreach (var reference in contents.References)
                {
                    package.references.Add(new PluginPackageReference(reference.Id, reference.Version));
                }
            }

            return(package);
        }
Example #2
0
        public static PluginPackage FromArchive(ZipFile archive)
        {
            var package = (PluginPackage)null;

            var contentsEntry = archive.FirstOrDefault(file => file.FileName == "contents.xml");

            if (contentsEntry == null)
            {
                throw new FileNotFoundException("'contents.xml' is missing!", "contents.xml");
            }

            using (var stream = contentsEntry.ToStream())
            {
                var contents = PluginPackageContentsXml.FromStream(stream);

                package = new PluginPackage(contents.Id, contents.Name, contents.Version, contents.Target, contents.Type);

                foreach (var file in contents.Files)
                {
                    var entry = archive.FirstOrDefault(a => a.FileName == file.Name);
                    if (entry == null)
                    {
                        throw new FileNotFoundException("The package file '" + file.Name + "' is missing!", file.Name);
                    }
                    package.files.Add(new PluginPackageFile(file.Name, entry.ToBytes()));
                }

                foreach (var reference in contents.References)
                {
                    package.references.Add(new PluginPackageReference(reference.Id, reference.Version));
                }
            }

            return(package);
        }
Example #3
0
        public static PluginPackage FromArchive(ZipFile archive)
        {
            var package = (PluginPackage)null;

            var contentsEntry = archive.FirstOrDefault(file => file.FileName == "contents.xml");
            if (contentsEntry == null)
                throw new FileNotFoundException("'contents.xml' is missing!", "contents.xml");

            using (var stream = contentsEntry.ToStream())
            {
                var contents = PluginPackageContentsXml.FromStream(stream);

                package = new PluginPackage(contents.Id, contents.Name, contents.Version, contents.Target);

                foreach (var file in contents.Files)
                {
                    var entry = archive.FirstOrDefault(a => a.FileName == file.Name);
                    if (entry == null)
                        throw new FileNotFoundException("The package file '" + file.Name + "' is missing!", file.Name);
                    package.files.Add(new PluginPackageFile(file.Name, entry.ToBytes()));
                }

                foreach (var reference in contents.References)
                {
                    package.references.Add(new PluginPackageReference(reference.Id, reference.Version));
                }
            }

            return package;
        }
Example #4
0
        private static void LoadPackages()
        {
            foreach (var file in Directory.GetFiles(packFolder))
            {
                if (!file.ToLower().EndsWith(".zip"))
                {
                    continue;
                }

                try
                {
                    packages.Add(PluginPackage.FromArchive(file));
                    Trace.WriteLine("Loading archive '" + Path.GetFileName(file) + "'.");
                }
                catch (FileNotFoundException e)
                {
                    Trace.WriteLine("Error in: '" + Path.GetFileName(file) + "': '" + e.FileName + "' is missing from the archive.");
                }
                catch (Exception e)
                {
                    Trace.WriteLine("Error in: '" + Path.GetFileName(file) + "': " + e);
                }
            }

            foreach (var directory in Directory.GetDirectories(packFolder))
            {
                if (!directory.ToLower().EndsWith(".zip"))
                {
                    continue;
                }

                try
                {
                    packages.Add(PluginPackage.FromDirectory(directory));
                    Trace.WriteLine("Loading directory '" + Path.GetFileName(directory) + "'.");
                }
                catch (FileNotFoundException e)
                {
                    Trace.WriteLine("Error in: '" + Path.GetFileName(directory) + "': '" + e.FileName + "' is missing from the directory.");
                }
                catch (Exception e)
                {
                    Trace.WriteLine("Error in: '" + Path.GetFileName(directory) + "': " + e);
                }
            }
        }
Example #5
0
 public static PluginPackage FromArchive(String file)
 {
     return(PluginPackage.FromArchive(ZipFile.Read(file)));
 }
Example #6
0
        public static PluginPackage FromDirectory(String directory)
        {
            var package = (PluginPackage)null;

            if (!File.Exists(Path.Combine(directory, "contents.xml")))
                throw new FileNotFoundException("'contents.xml' is missing!", "contents.xml");

            using (var stream = File.Open(Path.Combine(directory, "contents.xml"), FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var contents = PluginPackageContentsXml.FromStream(stream);

                package = new PluginPackage(contents.Id, contents.Name, contents.Version, contents.Target);
                foreach (var file in contents.Files)
                {
                    var path = Path.Combine(directory, file.Name);
                    if (!File.Exists(path))
                        throw new FileNotFoundException("The package file '" + file.Name + "' is missing!", file.Name);
                    package.files.Add(new PluginPackageFile(file.Name, File.ReadAllBytes(path)));
                }

                foreach (var reference in contents.References)
                {
                    package.references.Add(new PluginPackageReference(reference.Id, reference.Version));
                }
            }

            return package;
        }