public static byte[] AddFileToFolder(Package package, PackageFolder folder, string fileName, byte[] fileContents)
        {
            byte[] ret = null;
            try
            {

                if (package.dj == null || (package.dj != null && package.dj.OpenAgain()))
                {
                    try
                    {
                        if (package.package.CanWrite == false)
                            package.package.OpenAgain();

                        if (package.package.CanWrite)
                        {
                            if (package.package.AddFileToFolder(folder.FolderEntry, fileName, fileContents))
                            {
                                ret = package.package.RebuildPackageInMemory(
                                    new RSAParams(new DJsIO(Resources.KV, true)));
                            }
                        }
                    }
                    finally
                    {
                        package.package.CloseIO();
                    }
                }
            }
            catch { }
            return ret;
        }
Exemple #2
0
        public static byte[] AddFileToFolder(Package package, PackageFolder folder, string fileName, byte[] fileContents)
        {
            byte[] ret = null;
            try
            {

                if (package.dj == null || (package.dj != null && package.dj.OpenAgain()))
                {
                    try
                    {
                        if (package.package.CanWrite == false)
                            package.package.OpenAgain();

                        if (package.package.CanWrite)
                        {
                            if (package.package.AddFileToFolder(folder.FolderEntry, fileName, fileContents))
                            {
                                ret = package.package.RebuildPackageInMemory(
                                    new RSAParams(new DJsIO(Resources.KV, true)));
                            }
                        }
                    }
                    finally
                    {
                        package.package.CloseIO();
                    }
                }
            }
            catch { }
            return ret;
        }
Exemple #3
0
        public PackageFile(PackageFolder folder, FileEntry file, bool readData = true, Package pk = null)
        {
            this.FileEntry = file;
            this.Folder = folder;
            this.Package = pk;

           
                this.data = file.ExtractBytes(readData);
           
        }
Exemple #4
0
        internal PackageFolder(PackageFolder parent, FolderEntry entry, bool readData = true, Package pk = null)
        {
            this.FolderEntry = entry;
            Parent = parent;
            Package = pk;
            Files = new List<PackageFile>();
            Folders = new List<PackageFolder>();

            foreach (var f in entry.GetSubFiles())
            {
                Files.Add(new PackageFile(this, f, readData, pk));
            }

            foreach (var f in entry.GetSubFolders())
            {
                Folders.Add(new PackageFolder(this, f, readData, pk));
            }
        }
Exemple #5
0
        void GetSubFilesByName(PackageFolder folder, string fileName, ref List<PackageFile> ret)
        {
            
            foreach (var file in folder.Files)
            {
                
                if (string.Compare(file.Name,fileName,true)==0)
                {
                    ret.Add(file);
                }
                
            }

            foreach (var subf in folder.Folders)
            {
                GetSubFilesByName(subf, fileName, ref ret);
            }

        }
Exemple #6
0
        void GetSubFiles(PackageFolder folder, string extension, ref List<PackageFile> ret)
        {
            var exts = extension.Split('|');
            foreach (var file in folder.Files)
            {
                foreach (var ex in exts)
                {
                    if (file.Name.EndsWith(ex, StringComparison.OrdinalIgnoreCase))
                    {
                        ret.Add(file);
                    }
                }
            }

            foreach (var subf in folder.Folders)
            {
                GetSubFiles(subf, extension, ref ret);
            }

        }
Exemple #7
0
 void ReadData(bool readData = true, Package pk = null)
 {
     rootFolder = new PackageFolder(null, package.RootDirectory, readData, pk);
 }
        internal PackageFolder(PackageFolder parent, FolderEntry entry, bool readData = true, Package pk = null)
        {
            this.FolderEntry = entry;
            Parent = parent;
            Package = pk;
            Files = new List<PackageFile>();
            Folders = new List<PackageFolder>();

            foreach (var f in entry.GetSubFiles())
            {
                Files.Add(new PackageFile(this, f, readData, pk));
            }

            foreach (var f in entry.GetSubFolders())
            {
                Folders.Add(new PackageFolder(this, f, readData, pk));
            }
        }
        public PackageFile(PackageFolder folder, FileEntry file, bool readData = true, Package pk = null)
        {
            this.FileEntry = file;
            this.Folder = folder;
            this.Package = pk;

                this.data = file.ExtractBytes(readData);
        }
 void ReadData(bool readData = true, Package pk = null)
 {
     rootFolder = new PackageFolder(null, package.RootDirectory, readData, pk);
 }
        void GetSubFilesByName(PackageFolder folder, string fileName, ref List<PackageFile> ret)
        {
            foreach (var file in folder.Files)
            {

                if (string.Compare(file.Name,fileName,true)==0)
                {
                    ret.Add(file);
                }

            }

            foreach (var subf in folder.Folders)
            {
                GetSubFilesByName(subf, fileName, ref ret);
            }
        }
        void GetSubFiles(PackageFolder folder, string extension, ref List<PackageFile> ret)
        {
            var exts = extension.Split('|');
            foreach (var file in folder.Files)
            {
                foreach (var ex in exts)
                {
                    if (file.Name.EndsWith(ex, StringComparison.OrdinalIgnoreCase))
                    {
                        ret.Add(file);
                    }
                }
            }

            foreach (var subf in folder.Folders)
            {
                GetSubFiles(subf, extension, ref ret);
            }
        }
        public bool AddPackageTreeNodes(TreeNodeCollection treeNode, PackageFolder folder)
        {
            bool ret = true;
            try
            {
                TreeNodeCollection nc = treeNode;
                if (string.IsNullOrEmpty(folder.Name) == false)
                {
                    var n = nc.Add(folder.Name);
                    n.Tag = folder;
                    nc = n.Nodes;
                    n.ImageKey = "XPFolder.gif";
                    n.SelectedImageKey = "OpenFolder.gif";

                }

                foreach (PackageFile f in folder.Files)
                {
                    var fn = nc.Add(f.Name);
                    fn.Tag = f;

                    var ext = Path.GetExtension(f.Name);
                    if (ext.EndsWith("dta", StringComparison.OrdinalIgnoreCase) ||
                        ext.EndsWith("mid", StringComparison.OrdinalIgnoreCase) ||
                        ext.EndsWith("midi", StringComparison.OrdinalIgnoreCase))
                    {
                        if (ext.EndsWith("dta", StringComparison.OrdinalIgnoreCase))
                        {
                            fn.ImageKey = "file_extension_dll.png";
                            fn.SelectedImageKey = "file_extension_dll.png";
                        }
                        else
                        {
                            fn.ImageKey = "document-music-playlist.png";
                            fn.SelectedImageKey = "document-music-playlist.png";
                        }

                        var b = f.Data;
                        Debug.WriteLine(f.Name + " : " + b.Length.ToString());
                    }
                    else
                    {
                        fn.ImageKey = "file_extension_chm.png";
                        fn.SelectedImageKey = "file_extension_chm.png";
                    }
                }

                foreach (PackageFolder f in folder.Folders)
                {
                    if (!AddPackageTreeNodes(nc, f))
                        ret = false;
                }
            }
            catch { ret = false; }
            return ret;
        }
        public bool ExtractPackageContents(string localDirectory, PackageFolder folder, IEnumerable<string> filters)
        {
            var ret = true;
            try
            {
                localDirectory = localDirectory.AppendSlashIfMissing();

                var files = folder.Files.Where(file => file.Data != null &&
                    (filters == null || filters.Any(filter => file.Name.EndsWithEx(filter))));

                if (files.Any())
                {
                    localDirectory.AppendSlashIfMissing().CreateFolderIfNotExists();
                    foreach (var file in files)
                    {
                        localDirectory.PathCombine(file.Name).WriteFileBytes(file.Data);
                    }
                }
                foreach (var subFolder in folder.Folders)
                {
                    ExtractPackageContents(localDirectory.PathCombine(subFolder.Name).AppendSlashIfMissing(),
                        subFolder, filters);
                }

            }
            catch { ret = false; }
            return ret;
        }