From 118a2fd84ec0f0834f247796d9969d157443d13a Mon Sep 17 00:00:00 2001 From: GabiZar Date: Thu, 22 Jan 2026 13:52:13 +0100 Subject: [PATCH] Add bepInEx uninstallation --- main.js | 27 +++++++++++++++++++++++++++ preload.js | 3 ++- renderer/index.html | 2 +- renderer/renderer.js | 17 +++++++++++++++-- 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/main.js b/main.js index 4f014dc..3ee996c 100644 --- a/main.js +++ b/main.js @@ -9,6 +9,7 @@ const extract = require("extract-zip"); const store = new Store(); const userSavePath = app.getPath('userData') let silksongPath = store.get('silksong-path') +let bepinexVersion const createWindow = () => { const win = new BrowserWindow({ @@ -121,6 +122,7 @@ ipcMain.handle('install-bepinex', async () => { } const release = await res.json(); + bepinexVersion = release.tag_name; const asset = release.assets.find( a => a.name.endsWith(".zip") && a.name.toLowerCase().includes("win_x64") @@ -140,4 +142,29 @@ ipcMain.handle('install-bepinex', async () => { await extract(filePath, { dir: silksongPath}) await fs.unlink(filePath) + + return bepinexVersion +}) + +ipcMain.handle('uninstall-bepinex', async () => { + const folderPath = `${silksongPath}\\BepInEx` + if (await fileExists(folderPath)) { + await fs.rm(folderPath, { recursive: true }) + } + + const bepinexFiles = [ + ".doorstop_version", + "changelog.txt", + "doorstop_config.ini", + "winhttp.dll" + ] + + for (const file of bepinexFiles) { + const filePath = `${silksongPath}\\${file}` + if (await fileExists(filePath)) { + await fs.unlink(filePath) + } + } + bepinexVersion = undefined + return bepinexVersion }) \ No newline at end of file diff --git a/preload.js b/preload.js index 073673d..519dd17 100644 --- a/preload.js +++ b/preload.js @@ -24,5 +24,6 @@ contextBridge.exposeInMainWorld('electronAPI', { }); contextBridge.exposeInMainWorld('bepinex', { - install: () => ipcRenderer.invoke('install-bepinex') + install: () => ipcRenderer.invoke('install-bepinex'), + uninstall: () => ipcRenderer.invoke('uninstall-bepinex') }) \ No newline at end of file diff --git a/renderer/index.html b/renderer/index.html index 4ac43e0..9a0c298 100644 --- a/renderer/index.html +++ b/renderer/index.html @@ -104,7 +104,7 @@

BepInEx

-

BepInEx V1.0.0 is installed

+

diff --git a/renderer/renderer.js b/renderer/renderer.js index efceab6..fdcf550 100644 --- a/renderer/renderer.js +++ b/renderer/renderer.js @@ -8,6 +8,7 @@ const settingsTemplate = document.getElementById("settings-template"); const modTemplate = document.getElementById("mod-template"); const versionText = HomeTemplate.content.getElementById("version-text"); +let bepinexVersion navigate("home") @@ -118,9 +119,21 @@ async function downloadMod() { } async function installBepinex() { - bepinex.install() + bepinexVersion = await bepinex.install() + setBepinexVersion() } async function uninstallBepinex() { - console.log("WIP") + bepinexVersion = await bepinex.uninstall() + setBepinexVersion() +} + +async function setBepinexVersion() { + const bepinexVersionText = document.getElementById("bepinex-version-text") + if(await bepinexVersion == undefined) { + bepinexVersionText.innerText = "BepInEx is not installed" + } + else { + bepinexVersionText.innerText = `BepInEx ${bepinexVersion} is installed` + } } \ No newline at end of file