Example #1
0
        static void EmbedWeaverCoreResources()
        {
            var weaverGameLocation      = new FileInfo("Assets\\WeaverCore\\Other Projects~\\WeaverCore.Game\\WeaverCore.Game\\bin\\WeaverCore.Game.dll");
            var harmonyLocation         = new FileInfo("Assets\\WeaverCore\\Libraries\\0Harmony.dll");
            var iLGenLocation           = new FileInfo("Assets\\WeaverCore\\Libraries\\System.Reflection.Emit.ILGeneration.dll");
            var emitLocation            = new FileInfo("Assets\\WeaverCore\\Libraries\\System.Reflection.Emit.dll");
            var emitLightweightLocation = new FileInfo("Assets\\WeaverCore\\Libraries\\System.Reflection.Emit.Lightweight.dll");

            EmbedResourceCMD.EmbedResource(Data.WeaverCoreDLL, weaverGameLocation.FullName, "WeaverCore.Game", compression: CompressionMethod.NoCompression);
            EmbedResourceCMD.EmbedResource(Data.WeaverCoreDLL, harmonyLocation.FullName, "0Harmony", compression: CompressionMethod.NoCompression);
            //EmbedResourceCMD.EmbedResource(Data.WeaverCoreDLL, iLGenLocation.FullName, "ILGeneration", compression: CompressionMethod.NoCompression);
            //EmbedResourceCMD.EmbedResource(Data.WeaverCoreDLL, emitLocation.FullName, "ReflectionEmit", compression: CompressionMethod.NoCompression);
            //EmbedResourceCMD.EmbedResource(Data.WeaverCoreDLL, emitLightweightLocation.FullName, "ReflectionEmitLightweight", compression: CompressionMethod.NoCompression);
        }
Example #2
0
        static void EmbedAssetBundles(List <FileInfo> assemblies, IEnumerable <BuiltAssetBundle> builtBundles)
        {
            Debug.Log("Embedding Asset Bundles");
            var assemblyReplacements = new Dictionary <string, string>
            {
                { "Assembly-CSharp", Data.ModName },
                { "HollowKnight", "Assembly-CSharp" }
            };

            /*foreach (var assembly in assemblies)
             * {
             *      Debug.Log("Built Assembly = " + assembly.FullName);
             * }
             * foreach (var bundle in builtBundles)
             * {
             *      Debug.Log("Built Bundle = " + bundle.File.FullName);
             * }*/
            var bundlePairs = GetBundleToAssemblyPairs(assemblyReplacements);

            /*foreach (var pair in bundlePairs)
             * {
             *      Debug.Log($"Bundle Pair = {pair.Key} - {pair.Value.Name}");
             * }*/
            foreach (var bundle in builtBundles)
            {
                if (bundlePairs.ContainsKey(bundle.File.Name))
                {
                    var asmName = bundlePairs[bundle.File.Name];
                    //Debug.Log("A_ NAME = " + asmName.Name);

                    var asmDllName = asmName.Name + ".dll";
                    //Debug.Log("ASMDLLNAME = " + asmDllName);

                    var asmFile = assemblies.FirstOrDefault(a => a.Name == asmDllName);
                    //Debug.Log("ASM FILE = " + asmFile?.FullName);

                    if (asmFile != null)
                    {
                        var processedBundleLocation = PostProcessBundle(bundle, assemblyReplacements);
                        //Debug.Log($"Embedding {processedBundleLocation} into {asmFile.FullName}");
                        lock (embedLock)
                        {
                            EmbedResourceCMD.EmbedResource(asmFile.FullName, processedBundleLocation, bundle.File.Name + PlatformUtilities.GetBuildTargetExtension(bundle.Target), compression: WeaverBuildTools.Enums.CompressionMethod.NoCompression);
                        }
                    }
                }
                //var assembly = assemblies.FirstOrDefault(a => a.Name == bundle.)
            }
        }
Example #3
0
        static int Main(string[] args)
        {
            foreach (var arg in args)
            {
                Console.WriteLine("Arg = " + arg);
            }
            if (args.GetLength(0) == 0 || args[0] == "help" || args[0] == "/?" || args[0] == "?")
            {
                Console.WriteLine(GetHelpText());
                return(0);
            }
            switch (args[0])
            {
            case "loadresource":
                if (args.GetLength(0) == 1 || args[1] == "help" || args[1] == "/?" || args[1] == "?")
                {
                    Console.WriteLine(LoadResourceCMD.GetHelp());
                }
                else
                {
                    var resourceName = args[1];
                    if (args.GetLength(0) < 3)
                    {
                        PrintError("No output file Path specified");
                        return(-10);
                    }
                    var outputFilePath = args[2];
                    if (args.GetLength(0) < 4)
                    {
                        PrintError("No assembly To read from has been specified");
                        return(-20);
                    }
                    var assemblyToReadFrom = args[3];
                    LoadResourceCMD.LoadResource(resourceName, outputFilePath, assemblyToReadFrom);
                }
                break;

            case "embedresource":
                if (args.GetLength(0) == 1 || args[1] == "help" || args[1] == "/?" || args[1] == "?")
                {
                    Console.WriteLine(EmbedResourceCMD.GetHelp());
                }
                else
                {
                    var assemblyToEmbedTo = args[1];
                    if (args.GetLength(0) < 3)
                    {
                        PrintError("No file to embed has been specified");
                        return(-30);
                    }
                    var pathToFileToEmbed = args[2];
                    if (args.GetLength(0) < 4)
                    {
                        PrintError("No resource name has been specified");
                        return(-40);
                    }
                    var resourceName = args[3];

                    CompressionMethod compression = CompressionMethod.Auto;

                    if (args.GetLength(0) >= 5)
                    {
                        var argument = args[4].ToLower();
                        if (argument == "true")
                        {
                            compression = CompressionMethod.UseCompression;
                        }
                        else if (argument == "false")
                        {
                            compression = CompressionMethod.NoCompression;
                        }
                        else
                        {
                            PrintError("Invalid option entered for useCompression");
                            return(-50);
                        }
                    }

                    string hash = null;
                    if (args.GetLength(0) >= 6)
                    {
                        hash = args[5];
                    }

                    EmbedResourceCMD.EmbedResource(assemblyToEmbedTo, pathToFileToEmbed, resourceName, hash, compression);
                    Console.WriteLine("Successfully embedded [" + pathToFileToEmbed + "] as [" + resourceName + "] into " + assemblyToEmbedTo);
                }
                break;

            case "embeddirectory":
                if (args.GetLength(0) == 1 || args[1] == "help" || args[1] == "/?" || args[1] == "?")
                {
                    Console.WriteLine(EmbedDirectoryCMD.GetHelp());
                }
                else
                {
                    var directoryToEmbed = args[1];
                    if (args.GetLength(0) < 3)
                    {
                        PrintError("No assembly to embed to has been specified");
                        return(-60);
                    }
                    var    assemblyToEmbedTo = args[2];
                    string extensionFilter   = "*.*";
                    if (args.GetLength(0) >= 4)
                    {
                        extensionFilter = args[3];
                    }

                    EmbedDirectoryCMD.EmbedDirectory(directoryToEmbed, assemblyToEmbedTo, extensionFilter);
                    Console.WriteLine("Successfully embedded the directory [" + directoryToEmbed + "] into " + assemblyToEmbedTo);
                }
                break;

            case "storefilestoembed":
                if (args.GetLength(0) == 1 || args[1] == "help" || args[1] == "/?" || args[1] == "?")
                {
                    Console.WriteLine(StoreFilesToEmbedCMD.GetHelp());
                }
                else
                {
                    var directoryRelativeTo = args[1];
                    if (args.GetLength(0) < 3)
                    {
                        PrintError("No file to store that data been specified");
                        return(-70);
                    }
                    var fileToStoreData = args[2];
                    if (args.GetLength(0) < 4)
                    {
                        PrintError("No files been specified");
                        return(-80);
                    }
                    var files = args[3];
                    StoreFilesToEmbedCMD.StoreFilesToEmbed(directoryRelativeTo, fileToStoreData, files);
                    Console.WriteLine("Successfully stored the files to [" + fileToStoreData + "]");
                }
                break;

            case "embedmanyfiles":
                if (args.GetLength(0) == 1 || args[1] == "help" || args[1] == "/?" || args[1] == "?")
                {
                    Console.WriteLine(EmbedManyFilesCMD.GetHelp());
                }
                else
                {
                    var fileToReadFrom = args[1];
                    if (args.GetLength(0) < 3)
                    {
                        PrintError("No assembly to embed to been specified");
                        return(-90);
                    }
                    var assemblyToEmbedTo = args[2];
                    EmbedManyFilesCMD.EmbedManyFiles(fileToReadFrom, assemblyToEmbedTo);
                    Console.WriteLine("Successfully embed files into [" + assemblyToEmbedTo + "] from data stored in [" + fileToReadFrom + "]");
                }
                break;

            case "removeembeddedfiles":
                if (args.GetLength(0) == 1 || args[1] == "help" || args[1] == "/?" || args[1] == "?")
                {
                    Console.WriteLine(EmbedManyFilesCMD.GetHelp());
                }
                else
                {
                    var assemblyToRemoveFrom = args[1];
                    RemoveEmbeddedFilesCMD.RemoveEmbeddedFiles(assemblyToRemoveFrom);
                    Console.WriteLine("Successfully removed all embedded files from [" + assemblyToRemoveFrom + "]");
                }
                break;

            default:
                Console.WriteLine(GetHelpText());
                break;
            }

            return(0);
        }