Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }