static void Main(string[] args) { string inputPath = @"C:\Users\moneyl\RFG Unpack\Unpack\unpack3\steam.vpp_pc\"; string outputPath = @"C:\Users\moneyl\RFG Unpack\Pack\steam.vpp_pc"; var Packfile = new Packfile3(true); Packfile.Serialize(inputPath, outputPath, true, false); Console.WriteLine("\nComplete! Press any key to exit."); Console.ReadKey(); }
static void Main(string[] args) { //Todo: Add warning when unpacking large amount of files or folders //Todo: Add timer //Todo: Add support for custom unpack folder/location Parser.Default.ParseArguments <Options>(args) .WithParsed(options => { Console.WriteLine("Debug options output:"); Console.WriteLine("Input: {0}", options.Input); Console.WriteLine("Verbose: {0}", options.Verbose); //Console.WriteLine("All: {0}", options.All); Console.WriteLine("Recursive: {0}", options.Recursive); Console.WriteLine("Search: {0}", options.Search); foreach (var input in options.Input) { if (Directory.Exists(input)) //Check if it's a folder { //Since it's a folder, first handle -a and -s options, then -r on each packfile Console.WriteLine("Input exists and is a directory"); FileInfo[] inputFolder = { }; if (options.Search) //Search for packfiles in subfolders and the provided folder { inputFolder = new DirectoryInfo(input).GetFiles("*", SearchOption.AllDirectories); } else //Only search for packfiles in the provided folder { inputFolder = new DirectoryInfo(input).GetFiles(); } foreach (var file in inputFolder) { if (file.Extension == ".vpp_pc" || file.Extension == ".str2_pc") { string inputPath = file.FullName; string outputPath = file.DirectoryName + "\\Unpack\\" + file.Name + "\\"; try { var Packfile = new Packfile3(options.Verbose); Packfile.Deserialize(inputPath, outputPath); } catch (Exception ex) { MessageBox.Show("Exception caught while unpacking " + file.Name + ": " + ex.Message); } if (options.Recursive) { //Check OutputPath for valid packfiles and extract them FileInfo[] unpackFolder = new DirectoryInfo(outputPath).GetFiles(); foreach (var subfile in unpackFolder) { if (subfile.Extension == ".vpp_pc" || subfile.Extension == ".str2_pc") { try { string subInputPath = subfile.FullName; string subOutputPath = subfile.DirectoryName + "\\Subfiles\\" + subfile.Name + "\\"; var subPackfile = new Packfile3(options.Verbose); subPackfile.Deserialize(subInputPath, subOutputPath); } catch (Exception ex) { MessageBox.Show("Exception caught while unpacking " + subfile.Name + ": " + ex.Message); } } } } } } } else if (File.Exists(input)) //Check if it's a file { //Since it's a file, can safely ignore -a and -s options Console.WriteLine("Input exists and is a file!"); var PackfileInfo = new FileInfo(input); string InputPath = input; string OutputPath = PackfileInfo.DirectoryName + "\\Unpack\\" + PackfileInfo.Name + "\\"; try { var Packfile = new Packfile3(options.Verbose); Packfile.Deserialize(InputPath, OutputPath); } catch (Exception ex) { MessageBox.Show("Exception caught while unpacking " + PackfileInfo.Name + ": " + ex.Message); } if (options.Recursive) { //Check OutputPath for valid packfiles and extract them FileInfo[] unpackFolder = new DirectoryInfo(OutputPath).GetFiles(); foreach (var file in unpackFolder) { if (file.Extension == ".vpp_pc" || file.Extension == ".str2_pc") { try { string subInputPath = file.FullName; string subOutputPath = file.DirectoryName + "\\Subfiles\\" + file.Name + "\\"; var subPackfile = new Packfile3(options.Verbose); subPackfile.Deserialize(subInputPath, subOutputPath); } catch (Exception ex) { MessageBox.Show("Exception caught while unpacking " + file.Name + ": " + ex.Message); } } } } } } }); Console.WriteLine("\nPress any key to close."); Console.ReadKey(); }