From b5a2c52ddee1e8ea61f1b6d6c5c8f69014973a80 Mon Sep 17 00:00:00 2001 From: chenqiang Date: Wed, 10 Sep 2025 13:44:00 +0800 Subject: [PATCH] path --- background/db/path.js | 55 ++++++------------------------------------- 1 file changed, 7 insertions(+), 48 deletions(-) diff --git a/background/db/path.js b/background/db/path.js index e877a39..7ece533 100644 --- a/background/db/path.js +++ b/background/db/path.js @@ -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);