feat: set data directory path in main process and update preload.js to use it
This commit is contained in:
@@ -222,6 +222,12 @@ function checkServerAvailability(port, maxRetries = 30, retryDelay = 1000) {
|
|||||||
function startServer() {
|
function startServer() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const isDev = process.env.NODE_ENV === 'development';
|
const isDev = process.env.NODE_ENV === 'development';
|
||||||
|
|
||||||
|
const userDataPath = app.getPath('userData');
|
||||||
|
const dataDir = path.join(userDataPath, 'data');
|
||||||
|
|
||||||
|
// 设置环境变量供 preload.js 使用
|
||||||
|
process.env.ELECTRON_DATA_DIR = dataDir;
|
||||||
|
|
||||||
if (isDev) {
|
if (isDev) {
|
||||||
// 开发模式:假设开发者手动启动了 Go 后端和前端开发服务器
|
// 开发模式:假设开发者手动启动了 Go 后端和前端开发服务器
|
||||||
@@ -250,8 +256,6 @@ function startServer() {
|
|||||||
|
|
||||||
// 生产模式:启动二进制服务器
|
// 生产模式:启动二进制服务器
|
||||||
const env = { ...process.env, PORT: PORT.toString() };
|
const env = { ...process.env, PORT: PORT.toString() };
|
||||||
const userDataPath = app.getPath('userData');
|
|
||||||
const dataDir = path.join(userDataPath, 'data');
|
|
||||||
|
|
||||||
if (!fs.existsSync(dataDir)) {
|
if (!fs.existsSync(dataDir)) {
|
||||||
fs.mkdirSync(dataDir, { recursive: true });
|
fs.mkdirSync(dataDir, { recursive: true });
|
||||||
|
|||||||
@@ -1,22 +1,11 @@
|
|||||||
const { contextBridge } = require('electron');
|
const { contextBridge } = require('electron');
|
||||||
|
|
||||||
// 获取数据目录路径(用于显示给用户)
|
// 获取数据目录路径(用于显示给用户)
|
||||||
// 使用字符串拼接而不是 path.join 避免模块依赖问题
|
// 优先使用主进程设置的真实路径,如果没有则回退到手动拼接
|
||||||
function getDataDirPath() {
|
function getDataDirPath() {
|
||||||
const platform = process.platform;
|
// 如果主进程已设置真实路径,直接使用
|
||||||
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
if (process.env.ELECTRON_DATA_DIR) {
|
||||||
|
return process.env.ELECTRON_DATA_DIR;
|
||||||
switch (platform) {
|
|
||||||
case 'darwin':
|
|
||||||
return `${homeDir}/Library/Application Support/New API/data`;
|
|
||||||
case 'win32': {
|
|
||||||
const appData = process.env.APPDATA || `${homeDir}\\AppData\\Roaming`;
|
|
||||||
return `${appData}\\New API\\data`;
|
|
||||||
}
|
|
||||||
case 'linux':
|
|
||||||
return `${homeDir}/.config/New API/data`;
|
|
||||||
default:
|
|
||||||
return `${homeDir}/.new-api/data`;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user