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, });