From c028846dd3705d3a426b0d40b201b4bb2f234be1 Mon Sep 17 00:00:00 2001 From: chenqiang Date: Wed, 10 Sep 2025 06:10:24 +0800 Subject: [PATCH] data path --- background/db/path.js | 57 ++++++++++++++++--------------------- package-windows-portable.js | 3 +- 2 files changed, 26 insertions(+), 34 deletions(-) diff --git a/background/db/path.js b/background/db/path.js index 879fde6..f84695c 100644 --- a/background/db/path.js +++ b/background/db/path.js @@ -1,4 +1,4 @@ -const path = require('path'); // 添加缺失的path模块导入 +const path = require('path'); const fs = require('fs'); const { app } = require('electron'); @@ -8,49 +8,40 @@ const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged; // 检测是否为便携模式 let isPortable = false; let appDir; - -if (!isDev) { - const exePath = app.getPath('exe'); - appDir = path.dirname(exePath); - - // 检查应用目录下是否存在portable.txt文件 - const portableFlagPath = path.join(appDir, 'portable.txt'); - if (fs.existsSync(portableFlagPath)) { - isPortable = true; - console.log('启用便携模式'); - } - - // 如果可执行文件在portable-app目录中,也认为是便携模式 - if (path.basename(appDir) === 'portable-app') { - isPortable = true; - console.log('检测到可执行文件在portable-app目录中,启用便携模式'); - } -} - -// 根据模式选择数据目录 let dataDir; + if (isDev) { // 开发环境:数据存储在工程的data目录 dataDir = path.join(process.cwd(), 'data'); -} else if (isPortable) { - // 便携模式: - // 如果可执行文件在portable-app目录中,则数据目录与portable-app目录同级 +} else { + // 非开发环境:确定应用目录 + const exePath = app.getPath('exe'); + appDir = path.dirname(exePath); + + // 检测是否存在便携模式标记文件 + const portableFlagPath = path.join(appDir, 'portable.txt'); + if (fs.existsSync(portableFlagPath)) { + isPortable = true; + } + + // 关键修改:在便携模式下,data目录与可执行文件同级 + // 如果可执行文件在portable-app目录中,则data目录与portable-app目录同级 if (path.basename(appDir) === 'portable-app') { dataDir = path.join(path.dirname(appDir), 'data'); + isPortable = true; } else { - // 否则数据存储在应用目录下的data文件夹 + // 否则data目录与可执行文件同级 dataDir = path.join(appDir, 'data'); } - // 确保便携模式标记文件存在 - const portableFlagPath = path.join(path.dirname(dataDir), 'portable.txt'); - if (!fs.existsSync(portableFlagPath)) { - fs.writeFileSync(portableFlagPath, ''); - console.log('创建便携模式标记文件'); + // 确保便携模式标记文件存在于data目录同级 + if (isPortable) { + const flagDir = path.dirname(dataDir); + const flagPath = path.join(flagDir, 'portable.txt'); + if (!fs.existsSync(flagPath)) { + fs.writeFileSync(flagPath, ''); + } } -} else { - // 非便携模式:数据存储在应用同级的data目录 - dataDir = path.join(appDir, 'data'); } // 确保数据目录存在 diff --git a/package-windows-portable.js b/package-windows-portable.js index 981fc30..cf4a923 100644 --- a/package-windows-portable.js +++ b/package-windows-portable.js @@ -84,7 +84,8 @@ function buildPortableApp() { const projectRoot = __dirname; const buildDir = path.join(projectRoot, 'dist_electron'); const portableAppDir = path.join(buildDir, 'portable-app'); - const destDataDir = path.join(buildDir, 'data'); // data目录与portable-app目录同级 + // 修改:data目录放入portable-app目录内 + const destDataDir = path.join(portableAppDir, 'data'); // 确保目标data目录存在 if (!fs.existsSync(destDataDir)) {