public static void Unpack(string tocFilePath, string outDirectoryPath) { abort = false; overwriteFiles = false; SetProgressBarValue(0); progress = 0; byte[] rawToc = File.ReadAllBytes(tocFilePath); CryptTools.TocDecryptEncrypt(rawToc); Toc toc = new Toc(Path.GetFileNameWithoutExtension(tocFilePath), rawToc); packageSize = GetPackageSize(toc, 0); Unpack(toc, 0, "", Path.GetDirectoryName(tocFilePath), outDirectoryPath); if (abort) { SetProgressBarValue(0); SetStatusText("Aborted!"); } else { SetStatusText("Finished!"); } }
public static void Pack(string inDirectoryPath, string outDirectoryPath) { abort = false; overwriteFiles = false; SetProgressBarValue(0); progress = 0; DirectoryInfo inDirectory = new DirectoryInfo(inDirectoryPath); inDirectoryPathLength = inDirectory.FullName.Length; packageSize = GetDirectorySize(inDirectory); long entryCount = GetDirectoryItemCount(inDirectory) + 1; Toc toc = new Toc(inDirectory.Name, entryCount); Pack(toc, 0, 1, inDirectory, outDirectoryPath); if (!abort) { byte[] rawToc = toc.CreateRawToc(); CryptTools.TocDecryptEncrypt(rawToc); SafeFileWrite(JoinPaths(outDirectoryPath, toc.name + ".toc"), rawToc); } if (abort) { SetProgressBarValue(0); SetStatusText("Aborted!"); } else { SetStatusText("Finished!"); } }