Compare commits

..

9 Commits
1.0.4 ... main

Author SHA1 Message Date
Julian 12427d0790
1.1.1 2023-03-03 17:15:04 -05:00
Julian d479e1637c
update readme 2023-02-07 13:04:23 -05:00
Julian d03f66fe75
update readme 2023-02-07 10:20:02 -05:00
Julian eddebdc307
shit 2023-02-06 18:37:33 -05:00
Julian f50f63cf28
didn't actually need that 2023-02-06 18:37:13 -05:00
Julian e9a5e56a9c
1.1.0 2023-02-06 18:35:55 -05:00
Julian c1dca873c1
just bumping for the path combine fix 2023-02-06 17:47:52 -05:00
Julian c6a5b32ba7
add badge 2023-02-06 12:30:32 -05:00
Julian f485c446cf
god cannot hear my screams 2023-02-06 12:14:08 -05:00
3 changed files with 47 additions and 23 deletions

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net4.7.2</TargetFramework> <TargetFramework>net4.7.2</TargetFramework>
<Version>1.0.4</Version> <Version>1.1.1</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="PresentationFramework" /> <Reference Include="PresentationFramework" />

View File

@ -1,6 +1,6 @@
using System; using System;
using System.Diagnostics;
using System.IO; using System.IO;
using System.IO.Compression;
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
using HarmonyLib; using HarmonyLib;
@ -36,21 +36,15 @@ namespace DeezShade {
} }
} }
var installerUrl = var installerUrl = "https://gshade.org/releases/GShade.Latest.Installer.exe";
"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 exePath = tempPath + "GShade.Latest.Installer.exe"; var exePath = tempPath + "GShade.Latest.Installer.exe";
var zipPath = tempPath + "GShade.Latest.zip";
Console.WriteLine("Downloading GShade installer..."); Console.WriteLine("Downloading GShade installer...");
using (var client = new WebClient()) { using (var client = new WebClient()) {
client.DownloadFile(installerUrl, exePath); client.DownloadFile(installerUrl, exePath);
client.DownloadFile(zipUrl, zipPath);
} }
// I'm using the official GShade installer, am I not? :^ // I'm using the official GShade installer, am I not? :^
Console.WriteLine("Requesting new files through GShade installer...");
var assembly = Assembly.LoadFile(exePath); var assembly = Assembly.LoadFile(exePath);
var type = assembly.GetType("GShadeInstaller.App"); var type = assembly.GetType("GShadeInstaller.App");
@ -60,18 +54,19 @@ namespace DeezShade {
// Patch GShade from shutting off your computer (LMAO) // Patch GShade from shutting off your computer (LMAO)
Console.WriteLine("Patching GShade malware..."); Console.WriteLine("Patching GShade malware...");
type.GetField("_instReady").SetValue(null, true); // wp
var harmony = new Harmony("com.notnite.thanks-marot"); 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); type.GetMethod("CopyZipDeployProcess").Invoke(null, null);
type.GetMethod("PresetDownloadProcess").Invoke(null, null); type.GetMethod("PresetDownloadProcess").Invoke(null, null);
type.GetMethod("PresetInstallProcess").Invoke(null, null); type.GetMethod("PresetInstallProcess").Invoke(null, null);
// File.Copy gives an access denied error, so let's make it ourself // File.Copy gives an access denied error, so let's make it ourself
var src = tempPath + "gshade-shaders"; var src = tempPath + "gshade-shaders";
var dst = Path.Combine(gameInstall, "gshade-shaders"); var dst = Path.Combine(gameInstall, "reshade-shaders");
void RecursiveClone(string path) { void RecursiveClone(string path) {
var path2 = Path.Combine(src, path); var path2 = Path.Combine(src, path);
@ -94,25 +89,52 @@ namespace DeezShade {
Console.WriteLine("Moving shaders to game directory..."); Console.WriteLine("Moving shaders to game directory...");
RecursiveClone(""); RecursiveClone("");
Directory.CreateDirectory(gameInstall + "gshade-addons"); Directory.CreateDirectory(Path.Combine(gameInstall, "reshade-addons"));
Console.WriteLine("Extracting DLL and config..."); Directory.Move(Path.Combine(gameInstall, "gshade-presets"), Path.Combine(gameInstall, "reshade-presets"));
var zip = ZipFile.OpenRead(zipPath);
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"))) { if (File.Exists(Path.Combine(gameInstall, "dxgi.dll"))) {
File.Move(Path.Combine(gameInstall, "dxgi.dll"), Path.Combine(gameInstall, "dxgi.dll.old")); File.Move(Path.Combine(gameInstall, "dxgi.dll"), Path.Combine(gameInstall, "dxgi.dll.old"));
} }
zip.GetEntry("GShade64.dll").ExtractToFile(Path.Combine(gameInstall, "dxgi.dll"), true); var reshadeProcess = new Process();
zip.GetEntry("GShade.ini").ExtractToFile(Path.Combine(gameInstall, "GShade.ini"), true); 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");
if (!File.Exists(configPath)) {
Console.WriteLine("Writing ReShade config...");
var configText = @"[GENERAL]
[GENERAL]
EffectSearchPaths=.\reshade-shaders\Shaders\**
TextureSearchPaths=.\reshade-shaders\Textures\**
".Trim();
File.WriteAllText(configPath, configText);
}
Console.WriteLine("Done!\nSupport FOSS, and thank you for using DeezShade!\nPress any key to continue."); Console.WriteLine("Done!\nSupport FOSS, and thank you for using DeezShade!\nPress any key to continue.");
Console.ReadKey(); Console.ReadKey();
} }
public static bool LolDetour() { public static bool ProcessDetour(ref Process[] __result, string processName) {
// thank you for writing malware marot if (processName == "GShade.Installer") {
__result = Array.Empty<Process>();
return false; return false;
} }
return true;
}
} }
} }

View File

@ -1,10 +1,12 @@
# DeezShade # DeezShade
![license badge](https://img.shields.io/badge/license-%20MIT--except--for--GShade--Developers-green)
Okay, now it's just funny. With love from NotNet and friends. 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.
Note that this doesn't actually install vanilla ReShade (yet) - [do that yourself](https://reshade.me/) (but get the full addon build). 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) [CLICK HERE TO INSTALL IT.](https://git.n2.pm/NotNite/DeezShade/releases/latest)