From 08969a913819af1d57bdea8a41fcf08db77d1f4e Mon Sep 17 00:00:00 2001 From: MrGarlic Date: Tue, 7 May 2024 23:03:17 -0400 Subject: [PATCH] detect if installation is portable for persistent vesktop settings --- src/main/constants.ts | 10 ++++++++-- src/updater/main.ts | 5 ++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/constants.ts b/src/main/constants.ts index 1a02d5e..b19e95d 100644 --- a/src/main/constants.ts +++ b/src/main/constants.ts @@ -6,10 +6,16 @@ import { app } from "electron"; import { existsSync, readdirSync, renameSync, rmdirSync } from "fs"; -import { join } from "path"; +import { join, resolve } from "path"; + +const vesktopDir = resolve("..", "..", "..", "..", __dirname); +export const PORTABLE = process.platform === "win32" && !readdirSync(vesktopDir).includes("Uninstall Vesktop.exe"); const LEGACY_DATA_DIR = join(app.getPath("appData"), "VencordDesktop", "VencordDesktop"); -export const DATA_DIR = process.env.VENCORD_USER_DATA_DIR || join(app.getPath("userData")); +export const DATA_DIR = PORTABLE + ? resolve(vesktopDir + "Data") + : process.env.VENCORD_USER_DATA_DIR || join(app.getPath("userData")); + // TODO: remove eventually if (existsSync(LEGACY_DATA_DIR)) { try { diff --git a/src/updater/main.ts b/src/updater/main.ts index 207687e..a8f45fb 100644 --- a/src/updater/main.ts +++ b/src/updater/main.ts @@ -5,6 +5,7 @@ */ import { app, BrowserWindow, shell } from "electron"; +import { PORTABLE } from "main/constants"; import { Settings, State } from "main/settings"; import { handle } from "main/utils/ipcWrappers"; import { makeLinksOpenExternally } from "main/utils/makeLinksOpenExternally"; @@ -23,8 +24,6 @@ let updateData: UpdateData; handle(IpcEvents.UPDATER_GET_DATA, () => updateData); handle(IpcEvents.UPDATER_DOWNLOAD, () => { - const portable = !!process.env.PORTABLE_EXECUTABLE_FILE; - const { assets } = updateData.release; const url = (() => { switch (process.platform) { @@ -33,7 +32,7 @@ handle(IpcEvents.UPDATER_DOWNLOAD, () => { if (!a.name.endsWith(".exe")) return false; const isSetup = a.name.includes("Setup"); - return portable ? !isSetup : isSetup; + return PORTABLE ? !isSetup : isSetup; })!.browser_download_url; case "darwin": return assets.find(a =>