diff options
author | megumin <megumin.bakaretsurie@gmail.com> | 2022-12-14 22:35:02 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-14 23:35:02 +0100 |
commit | fea8c60a4091e10123e15b5c403f0e3f4e15c9c8 (patch) | |
tree | d58b4e35b81520454621f5e6743c1bee4254d31d /scripts/patcher/uninstall.js | |
parent | a67db11dc2554c9360d1ef8e97b4b558b71045af (diff) | |
download | Vencord-fea8c60a4091e10123e15b5c403f0e3f4e15c9c8.tar.gz Vencord-fea8c60a4091e10123e15b5c403f0e3f4e15c9c8.tar.bz2 Vencord-fea8c60a4091e10123e15b5c403f0e3f4e15c9c8.zip |
hotfix injector for ptb/canary/dev (#330)
Diffstat (limited to 'scripts/patcher/uninstall.js')
-rwxr-xr-x | scripts/patcher/uninstall.js | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/scripts/patcher/uninstall.js b/scripts/patcher/uninstall.js index e9764a7..ded6cf9 100755 --- a/scripts/patcher/uninstall.js +++ b/scripts/patcher/uninstall.js @@ -32,6 +32,7 @@ const { getWindowsDirs, getDarwinDirs, getLinuxDirs, + pathToBranch, } = require("./common"); switch (process.platform) { @@ -52,19 +53,56 @@ switch (process.platform) { async function uninstall(installations) { const selected = await getMenuItem(installations); + const useNewMethod = pathToBranch(selected.branch) !== "stable"; + for (const version of selected.versions) { - const dir = version.path; + const dir = useNewMethod ? path.join(version.path, "..") : version.path; + // Check if we have write perms to the install directory... try { fs.accessSync(selected.location, fs.constants.W_OK); } catch (e) { console.error("No write access to", selected.location); console.error( - "Try running this script as an administrator:", + "Make sure Discord isn't running. If that doesn't work,", + "try running this script as an administrator:", "sudo pnpm uninject" ); process.exit(1); } + if (useNewMethod) { + if (!fs.existsSync(path.join(dir, "_app.asar"))) { + console.error( + "Original app.asar (_app.asar) doesn't exist.", + "Is your Discord installation corrupt? Try reinstalling Discord." + ); + process.exit(1); + } + if (fs.existsSync(path.join(dir, "app.asar"))) { + try { + fs.rmSync(path.join(dir, "app.asar"), { force: true, recursive: true }); + } catch (err) { + console.error("Failed to delete app.asar folder"); + throw err; + } + } + try { + fs.renameSync( + path.join(dir, "_app.asar"), + path.join(dir, "app.asar") + ); + } catch (err) { + console.error("Failed to rename _app.asar to app.asar"); + throw err; + } + console.log( + "Successfully unpatched", + version.name + ? `${selected.branch} ${version.name}` + : selected.branch + ); + return; + } if (fs.existsSync(dir)) { fs.rmSync(dir, { recursive: true }); } |