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