From eb0e78d98ebeb47ee3744fd301b480760d59c323 Mon Sep 17 00:00:00 2001 From: Bepis <36346617+bbepis@users.noreply.github.com> Date: Mon, 12 Feb 2018 11:27:01 +1100 Subject: [PATCH] Made the patcher portable --- BepInEx.Patcher/BepInEx.Patcher.csproj | 2 +- BepInEx.Patcher/Program.cs | 46 ++++++++++++++++++++------ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/BepInEx.Patcher/BepInEx.Patcher.csproj b/BepInEx.Patcher/BepInEx.Patcher.csproj index 50038cd..b39e184 100644 --- a/BepInEx.Patcher/BepInEx.Patcher.csproj +++ b/BepInEx.Patcher/BepInEx.Patcher.csproj @@ -17,7 +17,7 @@ true full false - bin\Debug\ + M:\koikatu\KoikatuTrial_Data\Managed\ DEBUG;TRACE prompt 4 diff --git a/BepInEx.Patcher/Program.cs b/BepInEx.Patcher/Program.cs index 62a8d1a..9a3cc04 100644 --- a/BepInEx.Patcher/Program.cs +++ b/BepInEx.Patcher/Program.cs @@ -3,6 +3,7 @@ using Mono.Cecil; using Mono.Cecil.Cil; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,22 +12,45 @@ namespace BepInEx.Patcher { class Program { - const string originalDLL = @"M:\koikatu\KoikatuTrial_Data\Managed\Assembly-CSharp-original.dll"; - const string outputDLL = @"M:\koikatu\KoikatuTrial_Data\Managed\Assembly-CSharp.dll"; - - const string unityOriginalDLL = @"M:\koikatu\KoikatuTrial_Data\Managed\UnityEngine-original.dll"; - const string unityOutputDLL = @"M:\koikatu\KoikatuTrial_Data\Managed\UnityEngine.dll"; - - const string injectedDLL = @"M:\koikatu\KoikatuTrial_Data\Managed\BepInEx.dll"; - - const string referenceDir = @"M:\koikatu\KoikatuTrial_Data\Managed\"; + static void Error(string message) + { + Console.WriteLine($"Error: {message}"); + Console.WriteLine("Press any key to continue..."); + Console.ReadKey(); + Environment.Exit(1); + } static void Main(string[] args) { + string assemblyDLL = Path.GetFullPath("Assembly-CSharp.dll"); + if (!File.Exists(assemblyDLL)) + Error("\"Assembly-CSharp.dll\" not found."); + + string assemblyOriginalDLL = Path.GetFullPath("Assembly-CSharp.dll.bak"); + if (!File.Exists(assemblyOriginalDLL)) + File.Copy(assemblyDLL, assemblyOriginalDLL); + + + string unityOutputDLL = Path.GetFullPath("UnityEngine.dll"); + if (!File.Exists(unityOutputDLL)) + Error("\"UnityEngine.dll\" not found."); + + string unityOriginalDLL = Path.GetFullPath("UnityEngine.dll.bak"); + if (!File.Exists(unityOriginalDLL)) + File.Copy(unityOutputDLL, unityOriginalDLL); + + + string injectedDLL = Path.GetFullPath("BepInEx.dll"); + if (!File.Exists(unityOutputDLL)) + Error("\"BepInEx.dll\" not found."); + + string referenceDir = Directory.GetCurrentDirectory(); + + var defaultResolver = new DefaultAssemblyResolver(); defaultResolver.AddSearchDirectory(referenceDir); - AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly(originalDLL, new ReaderParameters { + AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly(assemblyOriginalDLL, new ReaderParameters { AssemblyResolver = defaultResolver }); AssemblyDefinition unity = AssemblyDefinition.ReadAssembly(unityOriginalDLL, new ReaderParameters @@ -53,7 +77,7 @@ namespace BepInEx.Patcher InjectAssembly(assembly, unity, injected); - assembly.Write(outputDLL); + assembly.Write(assemblyDLL); unity.Write(unityOutputDLL); }