diff --git a/DeezShade/DeezShade.csproj b/DeezShade/DeezShade.csproj index 706b081..4c02449 100644 --- a/DeezShade/DeezShade.csproj +++ b/DeezShade/DeezShade.csproj @@ -2,7 +2,7 @@ Exe net4.7.2 - 1.1.0 + 1.1.1 diff --git a/DeezShade/Program.cs b/DeezShade/Program.cs index 1fcadbe..f40ecba 100644 --- a/DeezShade/Program.cs +++ b/DeezShade/Program.cs @@ -1,7 +1,6 @@ using System; using System.Diagnostics; using System.IO; -using System.IO.Compression; using System.Net; using System.Reflection; using HarmonyLib; @@ -37,17 +36,12 @@ namespace DeezShade { } } - var installerUrl = - "https://github.com/Mortalitas/GShade/releases/latest/download/GShade.Latest.Installer.exe"; - var zipUrl = "https://github.com/Mortalitas/GShade/releases/latest/download/GShade.Latest.zip"; - + var installerUrl = "https://gshade.org/releases/GShade.Latest.Installer.exe"; var exePath = tempPath + "GShade.Latest.Installer.exe"; - var zipPath = tempPath + "GShade.Latest.zip"; Console.WriteLine("Downloading GShade installer..."); using (var client = new WebClient()) { client.DownloadFile(installerUrl, exePath); - client.DownloadFile(zipUrl, zipPath); } // I'm using the official GShade installer, am I not? :^ @@ -60,10 +54,10 @@ namespace DeezShade { // Patch GShade from shutting off your computer (LMAO) Console.WriteLine("Patching GShade malware..."); - type.GetField("_instReady").SetValue(null, true); // wp var harmony = new Harmony("com.notnite.thanks-marot"); - var lolMethod = type.GetMethod("www", BindingFlags.Static | BindingFlags.NonPublic); - harmony.Patch(lolMethod, new HarmonyMethod(typeof(Program).GetMethod(nameof(LolDetour)))); + + var getProcessesByName = typeof(Process).GetMethod("GetProcessesByName", new[] { typeof(string) }); + harmony.Patch(getProcessesByName, new HarmonyMethod(typeof(Program).GetMethod(nameof(ProcessDetour)))); Console.WriteLine("Requesting new files through GShade installer..."); type.GetMethod("CopyZipDeployProcess").Invoke(null, null); @@ -72,7 +66,7 @@ namespace DeezShade { // File.Copy gives an access denied error, so let's make it ourself var src = tempPath + "gshade-shaders"; - var dst = Path.Combine(gameInstall, "gshade-shaders"); + var dst = Path.Combine(gameInstall, "reshade-shaders"); void RecursiveClone(string path) { var path2 = Path.Combine(src, path); @@ -95,61 +89,52 @@ namespace DeezShade { Console.WriteLine("Moving shaders to game directory..."); RecursiveClone(""); - Directory.CreateDirectory(Path.Combine(gameInstall, "gshade-addons")); + Directory.CreateDirectory(Path.Combine(gameInstall, "reshade-addons")); - Console.Write("Use ReShade (y/n)? "); - var useReShade = Console.ReadLine().ToLower() == "y"; + Directory.Move(Path.Combine(gameInstall, "gshade-presets"), Path.Combine(gameInstall, "reshade-presets")); - if (useReShade) { - Console.WriteLine("Downloading ReShade..."); - var reshadeUrl = "http://static.reshade.me/downloads/ReShade_Setup_5.6.0_Addon.exe"; - var reshadePath = tempPath + "ReShade_Setup_5.6.0_Addon.exe"; - using (var client = new WebClient()) { - client.DownloadFile(reshadeUrl, reshadePath); - } + Console.WriteLine("Downloading ReShade..."); + var reshadeUrl = "http://reshade.me/downloads/ReShade_Setup_5.7.0_Addon.exe"; + var reshadePath = tempPath + "ReShade_Setup_5.7.0_Addon.exe"; + using (var client = new WebClient()) { + client.DownloadFile(reshadeUrl, reshadePath); + } - Console.WriteLine("Installing ReShade..."); - if (File.Exists(Path.Combine(gameInstall, "dxgi.dll"))) { - File.Move(Path.Combine(gameInstall, "dxgi.dll"), Path.Combine(gameInstall, "dxgi.dll.old")); - } + Console.WriteLine("Installing ReShade..."); + if (File.Exists(Path.Combine(gameInstall, "dxgi.dll"))) { + File.Move(Path.Combine(gameInstall, "dxgi.dll"), Path.Combine(gameInstall, "dxgi.dll.old")); + } - var reshadeProcess = new Process(); - reshadeProcess.StartInfo.FileName = reshadePath; - reshadeProcess.StartInfo.Arguments = - $"\"{Path.Combine(gameInstall, "ffxiv_dx11.exe")}\" --api dxgi --headless"; - reshadeProcess.Start(); + var reshadeProcess = new Process(); + reshadeProcess.StartInfo.FileName = reshadePath; + reshadeProcess.StartInfo.Arguments = + $"\"{Path.Combine(gameInstall, "ffxiv_dx11.exe")}\" --api dxgi --headless"; + reshadeProcess.Start(); - var configPath = Path.Combine(gameInstall, "ReShade.ini"); + var configPath = Path.Combine(gameInstall, "ReShade.ini"); - if (!File.Exists(configPath)) { - Console.WriteLine("Writing ReShade config..."); - var configText = @"[GENERAL] + if (!File.Exists(configPath)) { + Console.WriteLine("Writing ReShade config..."); + var configText = @"[GENERAL] [GENERAL] -EffectSearchPaths=.\gshade-shaders\Shaders\** -TextureSearchPaths=.\gshade-shaders\Textures\** +EffectSearchPaths=.\reshade-shaders\Shaders\** +TextureSearchPaths=.\reshade-shaders\Textures\** ".Trim(); - File.WriteAllText(configPath, configText); - } - } else { - Console.WriteLine("Extracting DLL and config..."); - var zip = ZipFile.OpenRead(zipPath); - - if (File.Exists(Path.Combine(gameInstall, "dxgi.dll"))) { - File.Move(Path.Combine(gameInstall, "dxgi.dll"), Path.Combine(gameInstall, "dxgi.dll.old")); - } - - zip.GetEntry("GShade64.dll").ExtractToFile(Path.Combine(gameInstall, "dxgi.dll"), true); - zip.GetEntry("GShade.ini").ExtractToFile(Path.Combine(gameInstall, "GShade.ini"), true); + File.WriteAllText(configPath, configText); } Console.WriteLine("Done!\nSupport FOSS, and thank you for using DeezShade!\nPress any key to continue."); Console.ReadKey(); } - public static bool LolDetour() { - // thank you for writing malware marot - return false; + public static bool ProcessDetour(ref Process[] __result, string processName) { + if (processName == "GShade.Installer") { + __result = Array.Empty(); + return false; + } + + return true; } } } diff --git a/README.md b/README.md index da8008c..4aeaf29 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ Okay, now it's just funny. With love from NotNet and friends. -DeezShade is a continuation of [GeezShade](https://git.n2.pm/NotNite/geezshade), in C#. +DeezShade is a continuation of [GeezShade](https://git.n2.pm/NotNite/geezshade), in C#. It allows you to download GShade shaders and presets while using them with ReShade. -**This is currently broken right now as Marot was banned from GitHub. Consider following [this guide](https://gist.github.com/ry00001/3e2e63b986cb0c673645ea42ffafcc26) or [temporarily patch out updates](https://notnite.com/gshade-patcher.html).** +Warning: This might break or be dangerous, and I don't always have time to fix it. Marot can and has done arbitrary things through DeezShade like performing a PC shutdown. Consider following [this guide](https://gist.github.com/ry00001/3e2e63b986cb0c673645ea42ffafcc26) for manual installation steps. [CLICK HERE TO INSTALL IT.](https://git.n2.pm/NotNite/DeezShade/releases/latest)