コード例 #1
0
        public void LoadArchive(string path)
        {
            if (_Archive != null)
            {
                _Archive.Dispose();
                _Archive = null;
            }
#if DEBUG
            using (var input = File.OpenRead(path))
            {
                _Archive = new ArchiveFile();
                _Archive.Deserialize(input);
            }
#else
            Thread thread = new Thread(() => ArchiveThreadLoad(path));
            thread.Start();

            while (thread.IsAlive)
            {
                Application.DoEvents();
            }
#endif
            if (_Archive == null)
            {
                return;
            }
            Program.FilePath = path;
            _Descr           = LoadDescriptions(_Archive.ResourceInfoXml);
            BuildEntryTree();
        }
コード例 #2
0
ファイル: ModOption.cs プロジェクト: clayne/mod-analyzer
 public void CloseArchive()
 {
     if (_archive != null)
     {
         _archive.Dispose();
         _archive = null;
     }
 }
コード例 #3
0
ファイル: ArchiveEntry.cs プロジェクト: tonyp7/ImageView
        public Stream GetStream()
        {
            ArchiveFile archiveFile = new ArchiveFile(_archiveFullname);
            var         filtered    = archiveFile.Entries.Where(entry => entry.FileName.Equals(Name)).ToList();

            if (filtered.Count > 0)
            {
                MemoryStream memoryStream = new MemoryStream();
                filtered[0].Extract(memoryStream);
                memoryStream.Position = 0;
                archiveFile.Dispose();
                return(memoryStream);
            }
            else
            {
                archiveFile.Dispose();
                return(null);
            }
        }
コード例 #4
0
        static void GetProductInfos(Stream inputStream, List <ProductInfo> productInfos)
        {
            ArchiveFile extractor = null;

            try {
                extractor = new ArchiveFile(inputStream);
                GetProductInfos(extractor, productInfos);
            } catch (SevenZipException) {
            } finally {
                extractor?.Dispose();
            }
        }
コード例 #5
0
        static void GetProductInfos(string file, List <ProductInfo> productInfos)
        {
            ArchiveFile extractor = null;

            try {
                extractor = new ArchiveFile(file);
                GetProductInfos(extractor, productInfos);
            } catch (SevenZipException) {
            } finally {
                extractor?.Dispose();
            }
        }
コード例 #6
0
 private void CloseArchiveFile()
 {
     if ((object)m_archiveFile != null)
     {
         m_archiveFile.DataReadException              -= file_DataReadException;
         m_archiveFile.HistoricFileListBuildComplete  -= file_HistoricFileListBuildComplete;
         m_archiveFile.HistoricFileListBuildException -= file_HistoricFileListBuildException;
         m_archiveFile.HistoricFileListBuildStart     -= file_HistoricFileListBuildStart;
         m_archiveFile.HistoricFileListUpdated        -= file_HistoricFileListUpdated;
         m_archiveFile.RolloverComplete -= file_RolloverComplete;
         m_archiveFile.RolloverStart    -= file_RolloverStart;
         m_archiveFile.Dispose();
     }
     m_archiveFile = null;
 }
コード例 #7
0
        public static void DownloadAndInstall()
        {
            string thisDir = Path.Combine(Directory.GetCurrentDirectory());

            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Build.DownloadLink);
                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
                string update = "";

                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    var fn = response.Headers["Content-Disposition"].Split(new string[] { "=" }, StringSplitOptions.None)[1].Replace("\"", "");
                    if (fn.Contains("?"))
                    {
                        fn = fn.Replace("?", "");
                    }
                    var    responseStream = response.GetResponseStream();
                    string name           = fn;

                    Write("Downloading update...");
                    // Otherwise do download.
                    using (var fileStream = File.Open(Path.Combine(thisDir, fn), FileMode.Create))
                    {
                        responseStream.CopyTo(fileStream);
                    }
                    update = Path.Combine(thisDir, fn);
                    Write("Download done. Extracting...");

                    ArchiveFile file = new ArchiveFile(update);
                    file.Extract(thisDir, true);

                    file.Dispose();
                    File.Delete(update);
                    Write("Update installed successfully!");
                    Thread.Sleep(1300);
                    Launch();
                }
            }
            catch (SevenZipException e)
            {
                Write("Archieve error: {0}", e.Message);
            }
        }
コード例 #8
0
 protected override void Dispose(bool disposing)
 {
     if (!m_disposed)
     {
         try
         {
             if (disposing)
             {
                 if ((object)m_file != null)
                 {
                     m_file.Dispose();
                 }
             }
         }
         finally
         {
             m_disposed = true;
             base.Dispose(disposing);
         }
     }
 }
コード例 #9
0
        public async Task <Dictionary <RelativePath, T> > Extract()
        {
            var source = new TaskCompletionSource <bool>();

            var th = new Thread(() =>
            {
                try
                {
                    _archive       = ArchiveFile.Open(_stream, _sig).Result;
                    ulong checkPos = 1024 * 32;
                    _archive._archive.Open(_archive._archiveStream, ref checkPos, null);
                    _itemsCount = _archive._archive.GetNumberOfItems();
                    _archive._archive.Extract(null, 0xFFFFFFFF, 0, this);
                    _archive.Dispose();
                    if (_killException != null)
                    {
                        source.SetException(_killException);
                    }
                    else
                    {
                        source.SetResult(true);
                    }
                }
                catch (Exception ex)
                {
                    source.SetException(ex);
                }
            })
            {
                Priority = ThreadPriority.BelowNormal, Name = "7Zip Extraction Worker Thread"
            };

            th.Start();



            await source.Task;

            return(_results);
        }
コード例 #10
0
        private void OnExtractFileSavePathSelected(ArchiveFile archive, string fileName, string destPath)
        {
            interactable = true;
            try
            {
                if (Path.GetExtension(fileName).ToLowerInvariant() == ".bmp")
                {
                    // Special processing to convert tileset to a standard bmp format
                    BitmapFile bitmapFile = TilesetLoader.ReadTileset(archive.ExtractFileToMemory(fileName));
                    bitmapFile.Serialize(destPath);
                }
                else
                {
                    archive.ExtractFile(fileName, destPath);
                }
            }
            finally
            {
                archive.Dispose();
            }

            Debug.Log(Path.GetFileName(destPath) + " extracted successfully.");
        }
コード例 #11
0
ファイル: ArchiveEntry.cs プロジェクト: tonyp7/ImageView
        /// <summary>
        /// Returns all images found in an archive file
        /// </summary>
        /// <param name="archiveFileFullName">Path to the archive file</param>
        /// <returns>A list of ArchiveEntry objects containing all suspected image files</returns>
        public static List <ArchiveEntry> GetImageFiles(string archiveFileFullName)
        {
            ArchiveFile         arc         = new ArchiveFile(archiveFileFullName);
            List <ArchiveEntry> imagesFiles = new List <ArchiveEntry>();

            var files = arc.Entries.Where(file => Config.ExtensionFilter.Any(x => file.FileName.EndsWith(x, StringComparison.OrdinalIgnoreCase))).ToList();

            if (files.Count > 0)
            {
                foreach (Entry archiveEntry in files)
                {
                    //check that we are not adding a folder named HELLO.JPG
                    if (!archiveEntry.IsFolder)
                    {
                        var e = new ArchiveEntry(archiveEntry, archiveFileFullName);
                        imagesFiles.Add(e);
                    }
                }
            }

            arc.Dispose();

            return(imagesFiles);
        }
コード例 #12
0
 private void OnExtractFileCanceled(ArchiveFile archive)
 {
     interactable = true;
     archive.Dispose();
 }
コード例 #13
0
 public void Close()
 {
     archiveFile.Dispose();
 }