90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
const fs = require('fs'); // 添加缺失的fs模块导入
|
||
const path = require('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 {
|
||
// 在Windows上,使用process.execPath获取可执行文件路径
|
||
const exePath = process.execPath;
|
||
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();
|
||
}
|
||
|
||
// 在第35行左右,更新数据目录选择逻辑
|
||
// 根据模式选择数据目录
|
||
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 (!isDev && !fs.existsSync(dataDir) && fs.existsSync(path.join(appDir, 'data'))) {
|
||
console.log('检测到应用目录下存在data目录,自动切换到便携模式');
|
||
dataDir = path.join(appDir, 'data');
|
||
isPortable = true;
|
||
}
|
||
|
||
// 确保数据目录存在
|
||
if (!fs.existsSync(dataDir)) {
|
||
try {
|
||
fs.mkdirSync(dataDir, { recursive: true });
|
||
console.log(`创建数据目录: ${dataDir}`);
|
||
} catch (mkdirError) {
|
||
console.error(`创建数据目录失败: ${dataDir}`, mkdirError);
|
||
// 作为最后的备选方案,使用当前工作目录
|
||
dataDir = process.cwd();
|
||
console.log(`备选数据目录: ${dataDir}`);
|
||
}
|
||
}
|
||
|
||
// 添加更多调试日志
|
||
console.log(`当前运行模式: ${isDev ? '开发环境' : (isPortable ? '便携模式' : '安装模式')}`);
|
||
console.log(`数据目录路径: ${dataDir}`);
|
||
console.log(`系统数据库路径: ${path.join(dataDir, 'system.db')}`);
|
||
console.log(`用户数据库路径: ${path.join(dataDir, 'user.db')}`);
|
||
|
||
// 系统数据库路径
|
||
function getSystemDbPath() {
|
||
return path.join(dataDir, 'system.db');
|
||
}
|
||
|
||
// 用户数据库路径
|
||
function getUserDbPath() {
|
||
return path.join(dataDir, 'user.db');
|
||
}
|
||
|
||
// 导出函数供其他模块使用
|
||
module.exports = {
|
||
getSystemDbPath,
|
||
getUserDbPath,
|
||
dataDir, // 导出数据目录路径,方便其他地方使用
|
||
isPortable // 导出便携模式状态
|
||
}; |