From 0494394fd8aa06e7ee47015634e9cf8470bf8b51 Mon Sep 17 00:00:00 2001 From: Minoricew <154642983+Minoricew@users.noreply.github.com> Date: Tue, 17 Jun 2025 00:16:43 +0800 Subject: [PATCH] =?UTF-8?q?[=F0=9F=9B=A0=EF=B8=8F=20Fix]=20Emergency=20fix?= =?UTF-8?q?=20for=20invalid=20config=20read=20logic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. [/] 紧急修复了上个 commit 中引入的错误路径获取逻辑 --- .../init/main/ipcModules/baseIpcHandler.js | 14 ++++++++ .../init/main/ipcModules/debugIpcHandler.js | 7 ---- src/aura/init/main/logger.js | 29 +--------------- src/aura/init/shared/configManager.js | 4 ++- src/aura/types/shared/global.d.ts | 2 +- .../preferences/settings/debug.js | 19 +++++++---- src/core/hook.js | 34 ++++++++++++++++++- src/core/preload.js | 5 +++ 8 files changed, 69 insertions(+), 45 deletions(-) diff --git a/src/aura/init/main/ipcModules/baseIpcHandler.js b/src/aura/init/main/ipcModules/baseIpcHandler.js index 96f4a3b..1cfc94a 100644 --- a/src/aura/init/main/ipcModules/baseIpcHandler.js +++ b/src/aura/init/main/ipcModules/baseIpcHandler.js @@ -54,6 +54,20 @@ const applyBaseIpcHandler = (ipcMain) => { browserWindowIns.close(); } ); + + ipcMain.handle(`${methodBase}.getAuraDirAsync`, (_evt, _arg) => { + return { + success: true, + data: global.__HUGO_AURA__.auraDir, + }; + }); + + ipcMain.on(`${methodBase}.getAuraDirSync`, (event, _arg) => { + event.returnValue = { + success: true, + data: global.__HUGO_AURA__.auraDir, + }; + }); }; module.exports = { applyBaseIpcHandler }; diff --git a/src/aura/init/main/ipcModules/debugIpcHandler.js b/src/aura/init/main/ipcModules/debugIpcHandler.js index 0376d07..36288b1 100644 --- a/src/aura/init/main/ipcModules/debugIpcHandler.js +++ b/src/aura/init/main/ipcModules/debugIpcHandler.js @@ -8,13 +8,6 @@ const __SCOPE = "main"; */ const applyDebugIpcHandler = (ipcMain) => { const methodBase = "$aura.debug"; - - ipcMain.handle(`${methodBase}.getLogDirAsync`, (_evt, _arg) => { - return { - success: true, - data: global.__HUGO_AURA__.logDir, - }; - }); }; module.exports = { applyDebugIpcHandler }; diff --git a/src/aura/init/main/logger.js b/src/aura/init/main/logger.js index 1fd52ba..8903d3d 100644 --- a/src/aura/init/main/logger.js +++ b/src/aura/init/main/logger.js @@ -2,40 +2,13 @@ const path = require("path"); const fs = require("fs"); const os = require("os"); const util = require("util"); -const RegistryManager = require("../shared/registryManager"); - -const getUserDocumentsDirPath = () => { - const registryManager = new RegistryManager(); - const pathInfo = registryManager.readRegKeySync( - '"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"', - "Personal", - false, - true, - /REG_EXPAND_SZ\s+(.+)/ - ); - if (pathInfo.success) { - const resolvedPath = pathInfo.data.replace( - /%([^%]+)%/g, - (match, varName) => { - return process.env[varName] || match; - } - ); - - return resolvedPath; - } else { - console.error( - "[HugoAura / Init / Logger] Failed to get the path of documents dir, using default val." - ); - return path.join(os.homedir(), "Documents"); - } -}; /** * * @param {import("../aura/types/main/core").WindowName} windowName */ const initLogger = (windowName) => { - const logDir = path.join(getUserDocumentsDirPath(), "HugoAura", "logs"); + const logDir = path.join(global.__HUGO_AURA__.auraDir, "logs"); global.__HUGO_AURA__.logDir = logDir; diff --git a/src/aura/init/shared/configManager.js b/src/aura/init/shared/configManager.js index 672ac26..8685ae2 100755 --- a/src/aura/init/shared/configManager.js +++ b/src/aura/init/shared/configManager.js @@ -69,7 +69,7 @@ const deepMerge = (target, source) => { class ConfigManager { constructor() { - this.configDir = path.join(global.__HUGO_AURA__.logDir, ".."); + this.configDir = global.__HUGO_AURA__.auraDir; this.configPath = path.join(this.configDir, "config.json"); this.encConfigPath = path.join(this.configDir, ".cache_2eafc8d0.dat"); // (雾 /* ↑ 不使用 .tmp 扩展名, 不然容易真被清理了 */ @@ -99,6 +99,7 @@ class ConfigManager { if (this.configDir === path.join(os.homedir(), "Documents", "HugoAura")) { return; } + const oldConfigPath = path.join( os.homedir(), "Documents", @@ -111,6 +112,7 @@ class ConfigManager { "HugoAura", ".cache_2eafc8d0.dat" ); + if (fs.existsSync(oldConfigPath)) { fs.copyFileSync(oldConfigPath, this.configPath); fs.unlinkSync(oldConfigPath); diff --git a/src/aura/types/shared/global.d.ts b/src/aura/types/shared/global.d.ts index 80b977c..01823ff 100755 --- a/src/aura/types/shared/global.d.ts +++ b/src/aura/types/shared/global.d.ts @@ -14,7 +14,7 @@ interface GlobalHugoAuraInfo { fsTasks?: MainProcessOnlyVal; hookedWindows?: MainProcessOnlyVal; ipcInit?: MainProcessOnlyVal; - logDir: MainProcessOnlyVal; + auraDir: MainProcessOnlyVal; plsRules?: Record | null; plsSettings?: Record | null; plsStats?: PLSStatus | null; diff --git a/src/aura/ui/pages/configSubPages/preferences/settings/debug.js b/src/aura/ui/pages/configSubPages/preferences/settings/debug.js index 72c3d8f..1d9cf43 100644 --- a/src/aura/ui/pages/configSubPages/preferences/settings/debug.js +++ b/src/aura/ui/pages/configSubPages/preferences/settings/debug.js @@ -1,5 +1,7 @@ const IPC_METHOD_BASE = "$aura.debug"; +const path = require("path"); + const debugSettings = [ { id: 0, @@ -18,19 +20,22 @@ const debugSettings = [ auraIf: () => true, buttonContent: "打开", valueGetter: async () => { - const ipcRendererRet = await ipcRenderer.invoke( - `${IPC_METHOD_BASE}.getLogDirAsync` - ); - if (ipcRendererRet.success && ipcRendererRet.data !== "") { - global.__HUGO_AURA__.logDir = ipcRendererRet.data; - return "目录位置: " + ipcRendererRet.data; + if ( + global.__HUGO_AURA__.auraDir && + global.__HUGO_AURA__.auraDir !== "" + ) { + return ( + "目录位置: " + path.join(global.__HUGO_AURA__.auraDir, "logs") + ); } else { return "未能获取日志目录位置"; } }, callbackFn: async (event) => { const childProc = require("child_process"); - childProc.spawn(`explorer.exe`, [`${global.__HUGO_AURA__.logDir}`]); + childProc.spawn(`explorer.exe`, [ + `${path.join(global.__HUGO_AURA__.auraDir, "logs")}`, + ]); }, }, ], diff --git a/src/core/hook.js b/src/core/hook.js index fd3975d..deab11f 100755 --- a/src/core/hook.js +++ b/src/core/hook.js @@ -6,7 +6,7 @@ if (!global.__HUGO_AURA__) { configInit: false, central: () => {}, ipcInit: false, - logDir: "", + auraDir: "", plsStats: null, plsSettings: null, plsRules: null, @@ -37,15 +37,45 @@ if (!global.__HUGO_AURA_CONFIG__) { global.__HUGO_AURA_CONFIG__ = {}; } +const path = require("path"); +const os = require("os"); + const MainProcessHooksManager = require("../aura/init/main/windowHooksManager"); const RendererHooksManager = require("../aura/init/rendererHook/uiHooksManager"); const EventBus = require("../aura/utils/eventBus"); const NetworkHook = require("../aura/init/rendererHook/networkHook"); const ConfigManager = require("../aura/init/shared/configManager"); +const RegistryManager = require("../aura/init/shared/registryManager"); const { buildIpcMain } = require("../aura/init/main/ipcHandler"); const { initLogger } = require("../aura/init/main/logger"); +const getUserDocumentsDirPath = () => { + const registryManager = new RegistryManager(); + const pathInfo = registryManager.readRegKeySync( + '"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"', + "Personal", + false, + true, + /REG_EXPAND_SZ\s+(.+)/ + ); + if (pathInfo.success && pathInfo.data) { + const resolvedPath = pathInfo.data.replace( + /%([^%]+)%/g, + (match, varName) => { + return process.env[varName] || match; + } + ); + + return resolvedPath; + } else { + console.error( + "[HugoAura / Init / Logger] Failed to get the path of documents dir, using default val." + ); + return path.join(os.homedir(), "Documents"); + } +}; + /** * * @param {import("../aura/types/main/core").LauncherArgs} param0 @@ -67,6 +97,8 @@ const launcher = ({ central, windowName, config }) => { app.exit(0); }; + global.__HUGO_AURA__.auraDir = path.join(getUserDocumentsDirPath(), "HugoAura"); + // >>> Init Logger <<< // initLogger(windowName); diff --git a/src/core/preload.js b/src/core/preload.js index a82e2f3..14ee2b0 100755 --- a/src/core/preload.js +++ b/src/core/preload.js @@ -5,9 +5,14 @@ const __AURA_VERSION__ = "0.1.1-pre-IV"; (() => { if (require.main) return; // 如果只是导入 Aura Version, 不运行闭包逻辑 + const auraDir = require("electron").ipcRenderer.sendSync( + "$aura.base.getAuraDirSync" + ); + // >>> Init Global Vars <<< // if (!global.__HUGO_AURA__) { global.__HUGO_AURA__ = { + auraDir: auraDir.data, configInit: true, // preload 始终比 hook 晚, 默认 config 已初始化 // ↑ 保留此参数的目的 -> 用于 configManager 中, configManager 的行为在 Renderer 和 Main 中是一致的 version: __AURA_VERSION__,