From d1d1e281385b71f55cea4267e1230a6a3fc31db5 Mon Sep 17 00:00:00 2001 From: thororen1234 <78185467+thororen1234@users.noreply.github.com> Date: Sat, 5 Apr 2025 19:51:49 -0400 Subject: [PATCH] Revert Back To Asar --- .github/workflows/build.yml | 2 +- scripts/build/build.mjs | 6 ++++ src/main/index.ts | 4 +-- src/main/ipcMain.ts | 2 +- src/main/patcher.ts | 5 +-- src/main/updater/common.ts | 7 +---- src/main/updater/http.ts | 61 ++++++++----------------------------- src/preload.ts | 2 +- 8 files changed, 24 insertions(+), 65 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f7bbf43b..6a1c8ee8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,7 +53,7 @@ jobs: cp Vencord.user.{js,js.LEGAL.txt} release # copy the plugin data jsons, the extension zips and the desktop/vesktop asars - cp *.{json,zip} release + cp *.{json,zip,asar} release # legacy un-asared files cp desktop/* release diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs index 63e89c31..b4e3050f 100644 --- a/scripts/build/build.mjs +++ b/scripts/build/build.mjs @@ -19,6 +19,7 @@ // @ts-check +import { createPackage } from "@electron/asar"; import { readdir, writeFile } from "fs/promises"; import { dirname, join } from "path"; import { fileURLToPath } from "url"; @@ -227,3 +228,8 @@ await Promise.all([ main: "main.js" })) ]); + +await Promise.all([ + createPackage("dist/desktop", "dist/desktop.asar"), + createPackage("dist/equibop", "dist/equibop.asar"), +]); diff --git a/src/main/index.ts b/src/main/index.ts index e487231e..760233cc 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -43,11 +43,9 @@ if (IS_VESKTOP || !IS_VANILLA) { } switch (url) { case "renderer.js.map": - case "equibopRenderer.js.map": case "preload.js.map": - case "equibopPreload.js.map": case "patcher.js.map": - case "equibopMain.js.map": + case "main.js.map": cb(join(__dirname, url)); break; default: diff --git a/src/main/ipcMain.ts b/src/main/ipcMain.ts index 7b34eb8c..43fd2099 100644 --- a/src/main/ipcMain.ts +++ b/src/main/ipcMain.ts @@ -119,7 +119,7 @@ ipcMain.handle(IpcEvents.OPEN_MONACO_EDITOR, async () => { autoHideMenuBar: true, darkTheme: true, webPreferences: { - preload: join(__dirname, IS_DISCORD_DESKTOP ? "preload.js" : "equibopPreload.js"), + preload: join(__dirname, "preload.js"), contextIsolation: true, nodeIntegration: false, sandbox: false diff --git a/src/main/patcher.ts b/src/main/patcher.ts index f91182d4..822dab49 100644 --- a/src/main/patcher.ts +++ b/src/main/patcher.ts @@ -29,11 +29,8 @@ console.log("[Equicord] Starting up..."); // Our injector file at app/index.js const injectorPath = require.main!.filename; -// special discord_arch_electron injection method -const asarName = require.main!.path.endsWith("app.asar") ? "_app.asar" : "app.asar"; - // The original app.asar -const asarPath = join(dirname(injectorPath), "..", asarName); +const asarPath = join(dirname(injectorPath), "..", "_app.asar"); const discordPkg = require(join(asarPath, "package.json")); require.main!.filename = join(asarPath, discordPkg.main); diff --git a/src/main/updater/common.ts b/src/main/updater/common.ts index 475435e8..bd77c417 100644 --- a/src/main/updater/common.ts +++ b/src/main/updater/common.ts @@ -16,12 +16,7 @@ * along with this program. If not, see . */ -export const EQUICORD_FILES = [ - IS_DISCORD_DESKTOP ? "patcher.js" : "equibopMain.js", - IS_DISCORD_DESKTOP ? "preload.js" : "equibopPreload.js", - IS_DISCORD_DESKTOP ? "renderer.js" : "equibopRenderer.js", - IS_DISCORD_DESKTOP ? "renderer.css" : "equibopRenderer.css", -]; +export const ASAR_FILE = IS_VESKTOP ? "vesktop.asar" : IS_EQUIBOP ? "equibop.asar" : "desktop.asar"; export function serializeErrors(func: (...args: any[]) => any) { return async function () { diff --git a/src/main/updater/http.ts b/src/main/updater/http.ts index af6df9b7..c0affa69 100644 --- a/src/main/updater/http.ts +++ b/src/main/updater/http.ts @@ -19,22 +19,16 @@ import { get } from "@main/utils/simpleGet"; import { IpcEvents } from "@shared/IpcEvents"; import { VENCORD_USER_AGENT } from "@shared/vencordUserAgent"; -import { app, dialog, ipcMain } from "electron"; -import { writeFile } from "fs/promises"; -import { - existsSync, - unlinkSync, - writeFileSync, -} from "original-fs"; -import { join } from "path"; +import { ipcMain } from "electron"; +import { writeFileSync as originalWriteFileSync } from "original-fs"; import gitHash from "~git-hash"; import gitRemote from "~git-remote"; -import { EQUICORD_FILES, serializeErrors } from "./common"; +import { ASAR_FILE, serializeErrors } from "./common"; const API_BASE = `https://api.github.com/repos/${gitRemote}`; -let PendingUpdates = [] as [string, string][]; +let PendingUpdate: string | null = null; async function githubGet(endpoint: string) { return get(API_BASE + endpoint, { @@ -71,54 +65,23 @@ async function fetchUpdates() { return false; - data.assets.forEach(({ name, browser_download_url }) => { - if (EQUICORD_FILES.some(s => name.startsWith(s))) { - PendingUpdates.push([name, browser_download_url]); - } - }); + const asset = data.assets.find(a => a.name === ASAR_FILE); + PendingUpdate = asset.browser_download_url; return true; } async function applyUpdates() { - await Promise.all(PendingUpdates.map( - async ([name, data]) => writeFile( - join(__dirname, name), - await get(data) - ) - )); - PendingUpdates = []; + if (!PendingUpdate) return true; + + const data = await get(PendingUpdate); + originalWriteFileSync(__dirname, data); + + PendingUpdate = null; return true; } -async function migrateAsarToLegacy() { - try { - const isFlatpak = process.platform === "linux" && !!process.env.FLATPAK_ID; - if (isFlatpak) throw "Flatpak Discord can't automatically be migrated."; - - const asarPath = join(__dirname, "../equicord.asar"); - if (existsSync(asarPath)) { - unlinkSync(asarPath); - } - - writeFileSync(__filename, "// Shim for legacy Equicord\n\nrequire(\"./index.js\");"); - - app.relaunch(); - app.exit(); - } catch (e) { - console.error("Failed to migrate to legacy", e); - - app.whenReady().then(() => { - dialog.showErrorBox( - "Migration Error", - "Failed to migrate back to the legacy version. Please reinstall using the Equicord Installer." - ); - app.exit(1); - }); - } -} - ipcMain.handle(IpcEvents.GET_REPO, serializeErrors(() => `https://github.com/${gitRemote}`)); ipcMain.handle(IpcEvents.GET_UPDATES, serializeErrors(calculateGitChanges)); ipcMain.handle(IpcEvents.UPDATE, serializeErrors(fetchUpdates)); diff --git a/src/preload.ts b/src/preload.ts index 96b07246..7c61a181 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -28,7 +28,7 @@ contextBridge.exposeInMainWorld("VencordNative", VencordNative); // Discord if (location.protocol !== "data:") { // #region cssInsert - const rendererCss = join(__dirname, IS_DISCORD_DESKTOP ? "renderer.css" : "equibopRenderer.css"); + const rendererCss = join(__dirname, "renderer.css"); const style = document.createElement("style"); style.id = "vencord-css-core";