This commit is contained in:
chenqiang 2025-09-10 13:44:00 +08:00
parent 639ee64052
commit b5a2c52dde

View File

@ -21,10 +21,16 @@ if (isDev) {
const isTempDir = exeDir.toLowerCase().includes('temp') || exeDir.toLowerCase().includes('tmp');
if (isTempDir) {
// 3. 如果在临时目录,使用用户主目录下的固定文件夹
// 3. 如果在临时目录,尝试多种方式寻找真实安装路径
// - 方式1通过可执行文件名回溯
const exeName = path.basename(exePath);
// - 方式2使用用户主目录下的固定文件夹
const userDataDir = path.join(app.getPath('userData'), 'StatExamData');
// 创建用户数据目录并使用
if (!fs.existsSync(userDataDir)) {
fs.mkdirSync(userDataDir, { recursive: true });
}
dataDir = userDataDir;
console.log(`检测到临时目录环境,数据目录已切换至: ${dataDir}`);
@ -38,9 +44,6 @@ if (isDev) {
fs.mkdirSync(dataDir, { recursive: true });
console.log(`创建数据目录: ${dataDir}`);
}
// 添加数据库文件复制逻辑
copyDatabaseFilesIfNeeded(dataDir);
} catch (error) {
console.error('获取数据目录失败:', error);
// 错误情况下使用用户数据目录作为后备
@ -51,50 +54,6 @@ if (isDev) {
}
}
/**
* 检查并复制数据库文件
* @param {string} targetDataDir - 目标数据目录
*/
function copyDatabaseFilesIfNeeded(targetDataDir) {
try {
// 定义数据库文件名
const dbFiles = ['system.db', 'user.db', '.gitignore'];
// 定义源数据目录resources中的data目录
const sourceDataDir = path.join(process.resourcesPath, 'data');
console.log(`检查是否需要从${sourceDataDir}复制数据库文件到${targetDataDir}`);
// 检查源数据目录是否存在
if (!fs.existsSync(sourceDataDir)) {
console.warn(`源数据目录不存在: ${sourceDataDir}`);
return;
}
// 检查并复制每个文件
dbFiles.forEach(fileName => {
const targetFilePath = path.join(targetDataDir, fileName);
const sourceFilePath = path.join(sourceDataDir, fileName);
// 只有当目标文件不存在时才复制
if (!fs.existsSync(targetFilePath) && fs.existsSync(sourceFilePath)) {
try {
fs.copyFileSync(sourceFilePath, targetFilePath);
console.log(`成功复制文件: ${fileName}${targetDataDir}`);
} catch (copyError) {
console.error(`复制文件${fileName}失败:`, copyError);
}
} else if (fs.existsSync(targetFilePath)) {
console.log(`文件已存在,跳过复制: ${fileName}`);
} else {
console.warn(`源文件不存在: ${sourceFilePath}`);
}
});
} catch (error) {
console.error('复制数据库文件时发生错误:', error);
}
}
// 输出调试信息
console.log('应用是否打包:', app.isPackaged);
console.log('数据目录路径:', dataDir);