fix: 增加sip文案

This commit is contained in:
Wxw-Gu
2026-09-18 09:38:33 +08:00
parent 774346d503
commit 12b8fb34c6
7 changed files with 106 additions and 19 deletions
+11 -5
View File
@@ -134,6 +134,15 @@ export function parseXkeyHelperOutput(output: string): DatabaseKeyResult {
return mapXkeyHelperFailure(rawError)
}
export const SIP_ENABLED_ERROR =
'macOS 系统完整性保护(SIP)已开启,无法自动获取数据库密钥。请先关闭 SIP,或改用手动粘贴。'
export function parseSipEnabled(statusOutput: string): boolean {
const status = statusOutput.match(/status:\s*([a-z]+)/i)?.[1]?.toLowerCase()
if (status) return status === 'enabled'
return statusOutput.toLowerCase().includes('enabled')
}
export class KeyServiceMac {
private getMacKeyRuntimeDir(): string {
return path.join(app.getPath('userData'), 'key-runtime')
@@ -306,7 +315,7 @@ export class KeyServiceMac {
private async isSipEnabled(): Promise<boolean> {
try {
const { stdout } = await execFileAsync('/usr/bin/csrutil', ['status'])
return stdout.toLowerCase().includes('enabled')
return parseSipEnabled(stdout)
} catch {
return false
}
@@ -346,10 +355,7 @@ export class KeyServiceMac {
return { success: false, error: '自动获取密钥目前仅支持 macOS' }
}
if (await this.isSipEnabled()) {
return {
success: false,
error: '当前系统还未完成连接环境准备,请按页面提示完成设置。'
}
return { success: false, code: 'SIP_ENABLED', error: SIP_ENABLED_ERROR }
}
try {
@@ -491,14 +491,8 @@ export function DatabaseConnectionPage({
<p className="database-login-platform-note">
{isMac ? (
<>
{isIntelMac
? 'Intel Mac 首次使用需要先准备连接环境,按页面提示完成即可。'
: 'macOS Apple 芯片首次获取密钥需要关闭 SIP,并在监听期间点击微信登录。'}{' '}
<a
href={isIntelMac ? GUIDE_URL : macKeyFaqUrl}
target="_blank"
rel="noreferrer"
>
macOS 首次获取密钥需要关闭 SIP,并在监听期间点击微信登录。{' '}
<a href={macKeyFaqUrl} target="_blank" rel="noreferrer">
查看说明
</a>
<br />第 4 步之前不要登录微信,只需保留微信登录页面窗口;授权后再点「登录」。