86 lines
2.9 KiB
JavaScript
86 lines
2.9 KiB
JavaScript
// 添加缺失的path模块导入
|
||
const path = require('path');
|
||
const fs = require('fs');
|
||
const { app } = require('electron');
|
||
|
||
// 判断是否为开发环境
|
||
const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged;
|
||
|
||
// 检测是否为便携模式
|
||
let isPortable = false;
|
||
let appDir;
|
||
let dataDir;
|
||
|
||
// 调试信息
|
||
console.log('环境检测:');
|
||
console.log('- 开发环境:', isDev);
|
||
console.log('- 当前工作目录:', process.cwd());
|
||
console.log('- 可执行文件路径:', app.getPath('exe'));
|
||
|
||
if (isDev) {
|
||
// 开发环境:数据存储在工程的data目录
|
||
dataDir = path.join(process.cwd(), 'data');
|
||
console.log('开发环境数据目录:', dataDir);
|
||
} else {
|
||
// 非开发环境:确定应用目录
|
||
const exePath = app.getPath('exe');
|
||
appDir = path.dirname(exePath);
|
||
console.log('应用目录:', appDir);
|
||
|
||
// 检测便携模式的多种可能性
|
||
// 1. 检查可执行文件同级目录是否有data文件夹
|
||
const dataPathSameLevel = path.join(appDir, 'data');
|
||
// 2. 检查可执行文件所在目录是否为portable-app,如果是,检查其父目录下是否有data
|
||
const isPortableAppDir = path.basename(appDir) === 'portable-app';
|
||
const dataPathParentLevel = isPortableAppDir ? path.join(path.dirname(appDir), 'data') : null;
|
||
// 3. 检查可执行文件同级目录是否有portable-app/data文件夹
|
||
const dataPathInPortableApp = path.join(appDir, 'portable-app', 'data');
|
||
|
||
console.log('检测便携模式:');
|
||
console.log('- 同级data目录存在:', fs.existsSync(dataPathSameLevel));
|
||
if (isPortableAppDir) {
|
||
console.log('- 父级data目录存在:', fs.existsSync(dataPathParentLevel));
|
||
}
|
||
console.log('- portable-app/data目录存在:', fs.existsSync(dataPathInPortableApp));
|
||
|
||
// 优先级顺序:同级data > portable-app内data > 父级data
|
||
if (fs.existsSync(dataPathSameLevel)) {
|
||
dataDir = dataPathSameLevel;
|
||
isPortable = true;
|
||
console.log('使用同级data目录:', dataDir);
|
||
} else if (fs.existsSync(dataPathInPortableApp)) {
|
||
dataDir = dataPathInPortableApp;
|
||
isPortable = true;
|
||
console.log('使用portable-app内data目录:', dataDir);
|
||
} else if (isPortableAppDir && fs.existsSync(dataPathParentLevel)) {
|
||
dataDir = dataPathParentLevel;
|
||
isPortable = true;
|
||
console.log('使用父级data目录:', dataDir);
|
||
} else {
|
||
// 默认使用用户数据目录
|
||
dataDir = path.join(app.getPath('userData'), 'data');
|
||
console.log('使用用户数据目录:', dataDir);
|
||
}
|
||
}
|
||
|
||
// 确保数据目录存在
|
||
if (!fs.existsSync(dataDir)) {
|
||
fs.mkdirSync(dataDir, { recursive: true });
|
||
console.log(`创建数据目录: ${dataDir}`);
|
||
}
|
||
|
||
// 系统数据库路径
|
||
function getSystemDbPath() {
|
||
return path.join(dataDir, 'system.db');
|
||
}
|
||
|
||
// 用户数据库路径
|
||
function getUserDbPath() {
|
||
return path.join(dataDir, 'user.db');
|
||
}
|
||
|
||
// 导出函数供其他模块使用
|
||
module.exports = {
|
||
getSystemDbPath,
|
||
getUserDbPath
|
||
}; |