const fs = require('fs'); const path = require('path'); // 添加缺失的path模块导入 const { app } = require('electron'); // 判断是否为开发环境 const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged; // 检测是否为便携模式 let isPortable = false; let appDir; let portableFlagPath; // 确保app已经初始化后再获取路径 if (app && app.getPath) { try { const exePath = app.getPath('exe'); appDir = path.dirname(exePath); portableFlagPath = path.join(appDir, 'portable.txt'); // 如果应用目录中存在portable.txt文件,则启用便携模式 if (!isDev && fs.existsSync(portableFlagPath)) { isPortable = true; console.log('启用便携模式'); } } catch (error) { console.error('获取应用路径时出错:', error); appDir = process.cwd(); } } else { appDir = process.cwd(); } // 根据模式选择数据目录 let dataDir; if (isDev) { // 开发环境:数据存储在工程的data目录 dataDir = path.join(process.cwd(), 'data'); } else if (isPortable) { // 便携模式:数据存储在应用目录下的data文件夹 dataDir = path.join(appDir, 'data'); } else { // 非便携模式:数据存储在应用同级的data目录 dataDir = path.join(path.dirname(appDir), 'data'); } // 确保数据目录存在 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, dataDir, // 导出数据目录路径,方便其他地方使用 isPortable // 导出便携模式状态 };