From 3b627389c9f101177e19072cd4d36b8620ba9520 Mon Sep 17 00:00:00 2001 From: dream_pep Date: Sat, 5 Sep 2026 20:35:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=89=93=E5=8C=85?= =?UTF-8?q?=E7=89=88=E8=83=8C=E6=99=AF=E5=9B=BE=E9=BB=91=E5=B1=8F=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E9=87=8D=E6=9E=84=E6=95=B0=E6=8D=AE=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增背景图路径归一化函数,将旧版使用的绝对路径 `/background.png` 转换为适配全环境的正确相对路径;重构Electron主进程的数据基准路径计算逻辑,修复Linux/AppImage打包版的只读目录限制 --- electron/main.ts | 6 +++--- src/stores/backgroundStore.ts | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/electron/main.ts b/electron/main.ts index 83078c4..cf9c418 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -20,6 +20,7 @@ import { saveConfig, configExists, getConfig, flushConfig, configPath } from './ import { findCachedBackgroundRaw, optimizeBackgroundFile, recoverBackgroundFromDataUrl } from './core/background-image'; import { registerResourceSchemePrivileges, registerResourceProtocol } from './resource-protocol'; import { createLogger, setDebugModeProvider, installIpcLogging, registerRendererLogBridge } from './core/logger'; +import { dataBasePath } from './core/paths'; const { app } = electron; @@ -73,9 +74,8 @@ function migrateLegacyFiles(): void { // Startup checks: .minecraft dir + config file + first launch detection function runStartupChecks(): { isFirstLaunch: boolean; config: ReturnType } { - const dataPath = app.isPackaged - ? path.dirname(app.getPath('exe')) - : path.join(__dirname, '..'); + // 数据基准:开发→项目根;Windows 打包→exe 目录;Linux/AppImage→userData(exe 目录是只读挂载) + const dataPath = dataBasePath(); // 1. Ensure .minecraft directory exists const minecraftDir = path.join(dataPath, '.minecraft'); diff --git a/src/stores/backgroundStore.ts b/src/stores/backgroundStore.ts index 30fc845..27938ca 100644 --- a/src/stores/backgroundStore.ts +++ b/src/stores/backgroundStore.ts @@ -23,6 +23,10 @@ const DEFAULT: { type: BackgroundType; image: string; blur: number; opacity: num opacity: 1, }; +/** 旧版主进程默认值用的绝对路径 /background.png(dev 可显示,打包 file:// 下指向文件系统根→黑屏)。 + * 统一归一化为渲染端 DEFAULT_BG(BASE_URL 相对路径,dev/打包均正确)。 */ +const normalizeDefaultBg = (url: string): string => (url === "/background.png" ? DEFAULT_BG : url); + export const useBackgroundStore = create((set) => ({ ...DEFAULT, @@ -56,7 +60,7 @@ export function syncBackgroundFromConfig() { const bg = useConfigStore.getState().config.background; useBackgroundStore.setState({ type: bg.bgType as BackgroundType, - image: bg.image, + image: normalizeDefaultBg(bg.image), blur: bg.blur, opacity: bg.opacity / 100, });