const fs = require("node:fs"); const path = require("node:path"); function applyPortableDataDirectory({ app, env = process.env, platform = process.platform, }) { // 触发条件:exe 所在目录下有 .portable 标记文件 // 这样开发版(没有 .portable)完全不受影响,只有绿色便携版才生效 if (platform !== "win32") return null; let exeDir; try { exeDir = path.dirname(app.getPath("exe")); } catch { return null; } const markerFile = path.join(exeDir, ".portable"); if (!fs.existsSync(markerFile)) return null; const dataDirectory = path.join(exeDir, "data"); try { if (!fs.existsSync(dataDirectory)) { fs.mkdirSync(dataDirectory, { recursive: true }); } } catch (_) { return null; } console.info(`[Main] Portable data directory (via .portable marker): ${dataDirectory}`); app.setPath("userData", dataDirectory); app.setPath("sessionData", dataDirectory); return { dataDirectory, source: "marker-file" }; } module.exports = { applyPortableDataDirectory };