diff --git a/src/renderer/src/components/DatabaseConnectionPage.tsx b/src/renderer/src/components/DatabaseConnectionPage.tsx
index 4038184..6d95df1 100644
--- a/src/renderer/src/components/DatabaseConnectionPage.tsx
+++ b/src/renderer/src/components/DatabaseConnectionPage.tsx
@@ -137,6 +137,7 @@ export function DatabaseConnectionPage({
}: DatabaseConnectionPageProps): React.ReactElement {
const isMac = platform === 'darwin'
const isIntelMac = isMac && environment?.architecture === 'x64'
+ const isAppleSiliconMac = isMac && !isIntelMac
const defaultPath = isMac
? '~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/'
: 'C:\\Users\\...\\WeChat Files\\Msg'
@@ -189,18 +190,16 @@ export function DatabaseConnectionPage({
2
- {isIntelMac ? '让微信停在登录页面' : '准备连接组件'}
+ {isMac ? '让微信停在登录页面' : '准备连接组件'}
- {isIntelMac
- ? '启动微信,但暂时不要点击登录'
- : '页面会按当前系统给出对应步骤'}
+ {isMac ? '启动微信,但暂时不要点击登录' : '页面会按当前系统给出对应步骤'}
3
- {isIntelMac ? '获取密钥并验证连接' : '登录并验证连接'}
+ {isMac ? '获取密钥并验证连接' : '登录并验证连接'}
验证通过后进入主界面
@@ -248,11 +247,13 @@ export function DatabaseConnectionPage({
: [
'检查本机环境',
'让微信停在登录页面',
- isIntelMac ? '确认开始获取密钥' : '确认开始准备',
+ isMac ? '确认开始获取密钥' : '确认开始准备',
isIntelMac
? '正在获取 Intel Mac 密钥'
- : `正在完成 ${isMac ? 'macOS' : 'Windows'} 授权`,
- isIntelMac
+ : isAppleSiliconMac
+ ? '正在监听 macOS 登录密钥'
+ : '正在完成 Windows 授权',
+ isMac
? '获取成功,验证数据库连接'
: '获取成功, 现在可以重新登录微信了',
'验证数据库连接'
@@ -264,14 +265,14 @@ export function DatabaseConnectionPage({
: status ||
[
'确认下方检测结果;没有找到目录时可以手动选择。',
- isIntelMac
+ isMac
? '请启动微信并停留在未登录界面,暂时不要点击登录,然后点击“我已准备好”。'
: '请退出当前微信账号,让微信停留在登录页面,然后点击“我已准备好”。',
- isIntelMac ? '确认开始获取密钥。' : '开始后请按页面提示完成系统授权。',
- isIntelMac
+ isMac ? '确认开始获取密钥。' : '开始后请按页面提示完成系统授权。',
+ isMac
? '等页面提示可以登录后,立即回到微信点击登录。'
: '正在准备连接组件,请不要关闭微信或 TraceMemo。',
- isIntelMac
+ isMac
? '密钥已获取,请继续验证数据库。'
: '请回到微信完成登录,登录成功后再回来验证。',
'正在验证密钥和本地数据库,请稍候。'
@@ -445,12 +446,12 @@ export function DatabaseConnectionPage({
)}
{guideStep === 3 && (
)}
{guideStep === 4 && (
)}
{guideStep === 5 && (
@@ -491,7 +492,7 @@ export function DatabaseConnectionPage({
<>
{isIntelMac
? 'Intel Mac 首次使用需要先准备连接环境,按页面提示完成即可。'
- : 'macOS 首次获取密钥需要关闭 SIP。'}{' '}
+ : 'macOS Apple 芯片首次获取密钥需要关闭 SIP,并在监听期间点击微信登录。'}{' '}
查看说明
diff --git a/src/renderer/src/features/settings/database-key/DatabaseKeyAutoDetect.tsx b/src/renderer/src/features/settings/database-key/DatabaseKeyAutoDetect.tsx
index d0ad2ee..dd8742e 100644
--- a/src/renderer/src/features/settings/database-key/DatabaseKeyAutoDetect.tsx
+++ b/src/renderer/src/features/settings/database-key/DatabaseKeyAutoDetect.tsx
@@ -2,7 +2,14 @@ import type { DatabaseKeyState } from './types'
import { runtimePlatform } from '../../../utils/runtime-environment'
import { Button } from '../../../components/ui'
-const PHASES = ['查找微信进程', '识别微信版本', '扫描候选密钥', '验证数据库', '获取完成']
+const DEFAULT_PHASES = ['查找微信进程', '识别微信版本', '扫描候选密钥', '验证数据库', '获取完成']
+const MAC_LOGIN_PHASES = [
+ '查找微信进程',
+ '等待管理员授权',
+ '监听登录密钥',
+ '验证数据库',
+ '获取完成'
+]
export function DatabaseKeyAutoDetect({
state,
@@ -17,8 +24,12 @@ export function DatabaseKeyAutoDetect({
}): React.ReactElement {
const environment = state.environment
const platform = environment?.platform || runtimePlatform
+ const isMac = platform === 'darwin'
const isIntelMac = platform === 'darwin' && environment?.architecture === 'x64'
- if (platform !== 'win32' && !isIntelMac) {
+ const isAppleSiliconMac = isMac && !isIntelMac
+ const supported = environment?.autoDetectSupported ?? (platform === 'win32' || isMac)
+ const phases = isAppleSiliconMac ? MAC_LOGIN_PHASES : DEFAULT_PHASES
+ if (!supported) {
return (
@@ -32,11 +43,15 @@ export function DatabaseKeyAutoDetect({
-
{isIntelMac ? 'Intel Mac 自动获取' : 'Windows 自动获取'}
+
+ {isIntelMac ? 'Intel Mac 自动获取' : isMac ? 'macOS 自动获取' : 'Windows 自动获取'}
+
{isIntelMac
? '请让微信停在未登录界面,按页面提示操作即可。'
- : 'TraceMemo 可在微信桌面端正在运行时,通过本机内存扫描尝试获取数据库密钥。'}
+ : isAppleSiliconMac
+ ? '执行时会请求管理员授权;授权后在微信登录界面点击“登录”即可,已有登录凭据时通常不需要扫码。监听最长两分钟,结束后会明确显示结果。'
+ : 'TraceMemo 可在微信桌面端正在运行时,通过本机内存扫描尝试获取数据库密钥。'}