private static void ExtractPSARC(string filename, string savePath, Stream inputStream, Platform platform, bool isExternalFile = true) { string psarcFilename = Path.GetFileNameWithoutExtension(filename); if (isExternalFile) { psarcFilename += String.Format("_{0}", platform.platform); } var destpath = Path.Combine(savePath, psarcFilename); if (Directory.Exists(destpath) && isExternalFile) { DirectoryExtension.SafeDelete(destpath); } var psarc = new PSARC.PSARC(); psarc.Read(inputStream, true); var step = Math.Round(1.0 / (psarc.TOC.Count + 2) * 100, 3); double progress = 0; GlobalExtension.ShowProgress("Inflating Entries ..."); foreach (var entry in psarc.TOC) { // custom InflateEntries // var debugMe = "Check the TOC"; var fullfilename = Path.Combine(destpath, entry.Name); if (Path.GetExtension(entry.Name).ToLower() == ".psarc") { psarc.InflateEntry(entry); ExtractPSARC(fullfilename, destpath, entry.Data, platform, false); } else { Directory.CreateDirectory(Path.GetDirectoryName(fullfilename)); psarc.InflateEntry(entry, fullfilename); if (entry.Data != null) { entry.Data.Dispose(); //Close(); } } if (!String.IsNullOrEmpty(psarc.ErrMSG)) { throw new InvalidDataException(psarc.ErrMSG); } progress += step; GlobalExtension.UpdateProgress.Value = (int)progress; } // GlobalExtension.HideProgress(); }
private static void ExtractPSARC(string filename, string savePath, Stream inputStream, Platform platform, bool isExternalFile = true) { string psarcFilename = Path.GetFileNameWithoutExtension(filename); if (isExternalFile) { psarcFilename += String.Format("_{0}", platform.platform); } var destpath = Path.Combine(savePath, psarcFilename); if (Directory.Exists(destpath) && isExternalFile) { DirectoryExtension.SafeDelete(destpath); } var psarc = new PSARC.PSARC(); psarc.Read(inputStream, true); foreach (var entry in psarc.TOC) {// custom InflateEntries var fullfilename = Path.Combine(destpath, entry.Name); if (Path.GetExtension(entry.Name).ToLower() == ".psarc") { psarc.InflateEntry(entry); ExtractPSARC(fullfilename, destpath, entry.Data, platform, false); } else { Directory.CreateDirectory(Path.GetDirectoryName(fullfilename)); psarc.InflateEntry(entry, fullfilename); if (entry.Data != null) { entry.Data.Close(); } } if (!String.IsNullOrEmpty(psarc.ErrMSG)) { throw new InvalidDataException(psarc.ErrMSG); } } }
private static void ExtractPSARC(string filename, string savePath, Stream inputStream, Platform platform, bool isExternalFile = true) { string psarcFilename = Path.GetFileNameWithoutExtension(filename); if (isExternalFile) psarcFilename += String.Format("_{0}", platform.platform); var destpath = Path.Combine(savePath, psarcFilename); if (Directory.Exists(destpath) && isExternalFile) DirectoryExtension.SafeDelete(destpath); var psarc = new PSARC.PSARC(); psarc.Read(inputStream, true); var step = Math.Round(1.0 / (psarc.TOC.Count + 2) * 100, 3); double progress = 0; GlobalExtension.ShowProgress("Inflating Entries ..."); foreach (var entry in psarc.TOC) {// custom InflateEntries var fullfilename = Path.Combine(destpath, entry.Name); if (Path.GetExtension(entry.Name).ToLower() == ".psarc") { psarc.InflateEntry(entry); ExtractPSARC(fullfilename, destpath, entry.Data, platform, false); } else { Directory.CreateDirectory(Path.GetDirectoryName(fullfilename)); psarc.InflateEntry(entry, fullfilename); if (entry.Data != null) { entry.Data.Dispose(); //Close(); } } if (!String.IsNullOrEmpty(psarc.ErrMSG)) throw new InvalidDataException(psarc.ErrMSG); progress += step; GlobalExtension.UpdateProgress.Value = (int)progress; } // GlobalExtension.HideProgress(); }