// 添加缺失的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 };