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); }
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); }