コード例 #1
0
        public static void InstallPackage(PackageStatusContext context)
        {
            IPackage package = null;

            switch (InstallationContext.PackageType)
            {
            case PackageType.DeveloperFull:
                package = new DeveloperFullPackage();
                break;

            case PackageType.DeveloperLite:
                package = new DeveloperLitePackage();
                break;

            case PackageType.Player:
                package = new PlayerPackage();
                break;
            }

            if (package == null)
            {
                throw new Exception("Unknown Package Type");
            }

            package.Install(context);
        }
コード例 #2
0
        public static void Patch(string outputPath, string assemblyDirectory, bool disableGrm, PackageStatusContext context)
        {
            var localDomain = AppDomain.CreateDomain("LocalDomain");

            var sdvPath = Path.Combine(InstallationContext.StardewPath, "Stardew Valley.exe");

            context.SetState(60, "Creating First Pass Patcher");
            var patcher = CreatePatcher(StardewPatcherPass.PassOne, assemblyDirectory, localDomain);

            context.SetState(65, "Loading Common Assemblies");
            patcher.LoadCommon(assemblyDirectory);
            patcher.SetOptions(assemblyDirectory, disableGrm);
            context.SetState(70, "Patching Intermediate Executable");
            patcher.Patch(sdvPath);

            context.SetState(75, "Creating Second Pass Patcher");
            patcher = CreatePatcher(StardewPatcherPass.PassTwo, assemblyDirectory, localDomain);
            patcher.LoadCommon(assemblyDirectory);
            patcher.SetOptions(assemblyDirectory, disableGrm);
            context.SetState(80, "Patching Final Executable");
            patcher.Patch(outputPath);

            AppDomain.Unload(localDomain);
        }