Files
SenMeshNet/electron/portableData.cjs

36 lines
1.0 KiB
JavaScript
Raw Normal View History

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