aliyun8639545015
|
48b6b2216f
|
fix(account-dir): 修复账号目录解析导致 -3001 错误的两处缺陷 (#996)
## 问题现象
部分用户在新版 WeFlow 配置 / 启动时持续报错:
「数据库目录不存在: <dbPath>\<wxid>」(错误码 -3001)
复现条件之一:用户曾在微信里"自定义过微信号",dbPath 下会同时遗留两个
形似的子目录:
- `<自定义号>` :旧的、无后缀的目录,里面没有 db_storage
- `<自定义号>_<4 位后缀>` :微信 4.x 实际写入数据的目录
## 根因分析
账号目录解析有两处独立缺陷,分别命中不同人群:
1. **dbPathService.findAccountDirs / scanWxidCandidates**
对名字以 `wxid_` 开头的目录额外要求"段数(按 `_` 切分)≥ 3"才放行,
会让"未自定义过微信号"的普通用户(真实目录就叫 `wxid_X`)的账号
完全消失在欢迎页扫描结果里。
2. **config.getAccountDir / accountDirResolver.resolveAccountDir**
对非 `wxid_` 开头的输入存在错误的"短路返回"分支:
if (!lowerWxid.startsWith('wxid_')) {
const direct = join(root, cleanedWxid)
if (existsSync(direct)) return direct // ← 没校验里面有没有 db_storage
}
叠加 cleanAccountDirName 会把 `<自定义号>_<4 位后缀>` 清洗成 `<自定义号>`,
于是无论用户保存的 myWxid 是哪个,都会命中旧的、无后缀的空目录,
最终在 wcdbCore.open 阶段触发 -3001。
## 修复策略
把两个文件中"快速短路返回"的代码路径全部去掉,统一走基于"候选 + 评分"
的扫描流程:
1) 同时接受**精确匹配**(entry == cleanedWxid) 与
**后缀匹配**(entry.startsWith(cleanedWxid + '_')) 两种命中;
2) 用 accountDirLooksValid 过滤掉"看起来根本不像账号目录"的项
(没有 db_storage 也没有 FileStorage/Image[2]),从而过滤掉残留空目录;
3) 在剩余候选中按以下优先级排序,取最优:
- 有 session.db > 没有:区分"真正写入数据" vs "残留空目录";
- 后缀匹配 > 精确匹配:与微信 4.x 实际写入目录命名一致;
- 修改时间更新 > 更旧:兜底。
dbPathService 侧不再以"段数"过滤目录,改由新增的 dedupeAccountDirs 处理
"无后缀目录"与"带后缀目录"同时存在时的去重,保留"微信实际在用"那个。
## 兼容性
- 旧版本残留的 myWxid(无论用户存的是无后缀还是带后缀形式)都会被
正确解析到带 session.db 的目录,用户无需手动修改配置;
- 未自定义微信号的普通用户(目录就叫 `wxid_X`)现在能正常被识别;
- 多账号、自定义微信号目录、绝对路径形式的 dbPath 等其它场景行为不变。
## 改动范围
- electron/services/dbPathService.ts
findAccountDirs / scanWxidCandidates 不再按段数过滤;
新增 dedupeAccountDirs / shouldPreferSuffixedDir / hasSessionDb 三个辅助方法。
- electron/services/config.ts
重写 getAccountDir 扫描分支;新增 accountDirLooksValid /
accountDirHasSessionDb 两个辅助方法。
- electron/services/accountDirResolver.ts
与 config.ts 同步重写 resolveAccountDir,去掉错误的短路分支。
Closes #996
|
2026-05-28 11:04:09 +08:00 |
|
cc
|
1e3a496021
|
#887 #875
|
2026-05-02 19:08:07 +08:00 |
|
cc
|
fd4a214f9f
|
修复 #773 #714
|
2026-04-16 22:03:39 +08:00 |
|
hicccc77
|
22d8049c2c
|
Revert "fix: 兼容微信新目录结构多一层嵌套导致账号目录识别失败的问题"
This reverts commit 5f6b0e8960.
|
2026-03-28 17:30:56 +08:00 |
|
hicccc77
|
5f6b0e8960
|
fix: 兼容微信新目录结构多一层嵌套导致账号目录识别失败的问题
修复 scanWxids 和 scanWxidCandidates 在 2.0b4.0.9/xwechat_files/wxid_xxx
结构下扫描不到账号目录的问题,增加往下多扫一层的兜底逻辑
Fixes #541
|
2026-03-28 17:28:52 +08:00 |
|
hicccc77
|
64be2dd562
|
fix: 支持微信 4.0.5+ 新数据目录结构 (Application Support/com.tencent.xinWeChat/2.0b4.0.x)
- dbPathService.autoDetect: 自动枚举版本目录(如 2.0b4.0.9),优先检测新路径
- dbPathService.getDefaultPath: 同步返回新版本路径
- keyServiceMac.resolveXwechatRootFromPath: 兼容新路径标记
- keyServiceMac.getKvcommCandidates: 补充新路径下的 kvcomm 推导
Fixes #551
|
2026-03-26 12:08:47 +08:00 |
|
H3CoF6
|
579b63b036
|
feat: 解析mmkv数据,优化账号选择体验
|
2026-03-16 07:30:08 +08:00 |
|
hicccc77
|
1d08ab945d
|
feat: dbPathService 支持 macOS 微信数据库路径
|
2026-03-08 13:01:49 +08:00 |
|
xuncha
|
bfcd154a25
|
wxid可以自己选择
|
2026-01-31 18:11:55 +08:00 |
|
cc
|
b3aaea16f2
|
feat: 支持中文路径
|
2026-01-29 21:59:29 +08:00 |
|
cc
|
01641834de
|
新的提交
|
2026-01-10 13:01:37 +08:00 |
|