From 59c67e8b240a412342362123659e222e5cbc4ff3 Mon Sep 17 00:00:00 2001 From: chenqiang Date: Wed, 10 Sep 2025 13:52:25 +0800 Subject: [PATCH] portable --- background/db/path.js | 56 ++++++------------------------------- package-windows-portable.js | 12 +------- 2 files changed, 10 insertions(+), 58 deletions(-) diff --git a/background/db/path.js b/background/db/path.js index 7ece533..e287e59 100644 --- a/background/db/path.js +++ b/background/db/path.js @@ -11,51 +11,19 @@ if (isDev) { // 开发环境:数据存储在工程的data目录 dataDir = path.join(process.cwd(), 'data'); } else { - try { - // 生产环境(便携模式): - // 1. 获取可执行文件所在目录 - const exePath = process.execPath; - const exeDir = path.dirname(exePath); + // 生产环境(便携模式):使用resources目录下的data文件夹 + dataDir = path.join(process.resourcesPath, 'data'); +} - // 2. 检查是否在临时目录中 - const isTempDir = exeDir.toLowerCase().includes('temp') || exeDir.toLowerCase().includes('tmp'); - - if (isTempDir) { - // 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}`); - } else { - // 直接使用可执行文件所在目录下的data文件夹 - dataDir = path.join(exeDir, 'data'); - } - - // 确保数据目录存在 - if (!fs.existsSync(dataDir)) { - fs.mkdirSync(dataDir, { recursive: true }); - console.log(`创建数据目录: ${dataDir}`); - } - } catch (error) { - console.error('获取数据目录失败:', error); - // 错误情况下使用用户数据目录作为后备 - dataDir = path.join(app.getPath('userData'), 'StatExamData'); - if (!fs.existsSync(dataDir)) { - fs.mkdirSync(dataDir, { recursive: true }); - } - } +// 确保数据目录存在 +if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + console.log(`创建数据目录: ${dataDir}`); } // 输出调试信息 console.log('应用是否打包:', app.isPackaged); +console.log('资源目录路径:', process.resourcesPath); console.log('数据目录路径:', dataDir); // 系统数据库路径 @@ -68,13 +36,7 @@ function getUserDbPath() { return path.join(dataDir, 'user.db'); } -// 导出获取数据目录的方法,便于调试 -function getDataDir() { - return dataDir; -} - module.exports = { getSystemDbPath, - getUserDbPath, - getDataDir + getUserDbPath }; \ No newline at end of file diff --git a/package-windows-portable.js b/package-windows-portable.js index a19c359..b783e58 100644 --- a/package-windows-portable.js +++ b/package-windows-portable.js @@ -1,6 +1,6 @@ -const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); +const fs = require('fs'); // 创建一个兼容Node.js 12的删除文件夹函数 function deleteFolderRecursive(dir) { @@ -77,16 +77,6 @@ function buildPortableApp() { console.log('Windows 7便携应用构建完成!'); console.log('构建产物位于 dist_electron 目录'); - // ===== 移除data目录复制逻辑 ===== - - // 构建完成后的其他处理(如果有) - console.log('便携应用构建流程完成'); - console.log('data目录结构准备完成!'); - console.log('最终目录结构:'); - console.log(`- dist_electron/`); - console.log(` - portable-app/`); - console.log(` - StatExamPortable_${require('./package.json').version}_*.exe`); - } catch (error) { console.error('构建失败:', error); process.exit(1);