bookworm-boot/启动Bookworm.bat

39 lines
1.8 KiB
Batchfile
Raw Normal View History

@echo off
chcp 65001 > nul
feat(v3.0.11): 架构重构 — 启动链路 7 跳 → 1 跳直链 用户报障驱动 (v3.0.3-3.0.10 共 9 轮迭代后接受架构原罪). 旧架构: .lnk → bat → wt → pwsh → Base64 → DPAPI → claude (7 跳) 新架构: .lnk → pwsh → claude.ps1 (1 跳, 凭证由 profile 异步加载) ADR-001 桌面 .lnk 直调 pwsh + claude.ps1 绝对路径 - 安装时 Get-Command claude / npm config get prefix 定位 claude.ps1 - bake 进 .lnk Args, 运行时不依赖任何 PATH 重载 - 自验证: 创建后回读 .lnk 确认 Target/Args 完整, 失败立即删除拒绝交付 ADR-002 DPAPI 凭证加载迁移到 PowerShell profile sentinel - BW_CRED_START..END 块写入 ~/Documents/PowerShell/profile.ps1 - pwsh 启动自动 source, 与启动链路彻底解耦 - profile 编辑用 String.Replace 字面替换 (避开 -replace $ backreference) ADR-003 启动 / 更新功能拆分 - 启动Bookworm.lnk → 仅启动 (1 跳) - 更新Bookworm.lnk → 仅 git pull - 更新并启动Bookworm.bat → 重命名为 更新Bookworm.bat (仅同步) - tools/gen-launcher-bats.ps1 归档 (新架构不需要 Base64 生成器) 8 个失败模式中 7 个被架构性消除: ✅ F1 wt ; 切 tab (无 wt) ✅ F2 cmd 转义 (无 cmd 启动路径) ✅ F3 wt -d 引号 (无 wt -d) ✅ F4 Base64 解码语义错 (无 Base64) ✅ F5 PATH 时序 (绝对路径不依赖 PATH) ✅ F6 claude shim (直调 .ps1) ✅ F8 wt 自身 issue (无 wt) ⚠️ F7 DPAPI 跨用户 (设计限制, 跨用户需重激活) EXE 220672 → 227840 bytes (+7168, ADR-002 profile 注入函数)
2026-04-25 18:19:07 +08:00
:: v3.0.11 架构重构: 桌面 .lnk 已直调 pwsh + claude.ps1 绝对路径, 不再走本 bat.
:: 此文件仅保留作为兼容入口 (老用户已经把 .bat 加到收藏夹/开始菜单的场景),
:: 内部行为简化为转发到桌面 .lnk 触发统一启动路径.
::
:: 如果用户双击本 .bat (而非桌面 .lnk), 直接 invoke pwsh + claude.ps1 启动:
setlocal
:: 1. 定位 pwsh.exe (PS7 必需, 启动器 v3.0.11 强依赖)
set "PWSH_EXE="
where pwsh >nul 2>nul && for /f "delims=" %%i in ('where pwsh') do if not defined PWSH_EXE set "PWSH_EXE=%%i"
if not defined PWSH_EXE if exist "%ProgramFiles%\PowerShell\7\pwsh.exe" set "PWSH_EXE=%ProgramFiles%\PowerShell\7\pwsh.exe"
if not defined PWSH_EXE if exist "%LOCALAPPDATA%\Microsoft\PowerShell\pwsh.exe" set "PWSH_EXE=%LOCALAPPDATA%\Microsoft\PowerShell\pwsh.exe"
if not defined PWSH_EXE (
echo [!] PowerShell 7 未安装. 请先重跑 Bookworm-Setup.exe 装好 PS7.
pause
exit /b 1
)
feat(v3.0.11): 架构重构 — 启动链路 7 跳 → 1 跳直链 用户报障驱动 (v3.0.3-3.0.10 共 9 轮迭代后接受架构原罪). 旧架构: .lnk → bat → wt → pwsh → Base64 → DPAPI → claude (7 跳) 新架构: .lnk → pwsh → claude.ps1 (1 跳, 凭证由 profile 异步加载) ADR-001 桌面 .lnk 直调 pwsh + claude.ps1 绝对路径 - 安装时 Get-Command claude / npm config get prefix 定位 claude.ps1 - bake 进 .lnk Args, 运行时不依赖任何 PATH 重载 - 自验证: 创建后回读 .lnk 确认 Target/Args 完整, 失败立即删除拒绝交付 ADR-002 DPAPI 凭证加载迁移到 PowerShell profile sentinel - BW_CRED_START..END 块写入 ~/Documents/PowerShell/profile.ps1 - pwsh 启动自动 source, 与启动链路彻底解耦 - profile 编辑用 String.Replace 字面替换 (避开 -replace $ backreference) ADR-003 启动 / 更新功能拆分 - 启动Bookworm.lnk → 仅启动 (1 跳) - 更新Bookworm.lnk → 仅 git pull - 更新并启动Bookworm.bat → 重命名为 更新Bookworm.bat (仅同步) - tools/gen-launcher-bats.ps1 归档 (新架构不需要 Base64 生成器) 8 个失败模式中 7 个被架构性消除: ✅ F1 wt ; 切 tab (无 wt) ✅ F2 cmd 转义 (无 cmd 启动路径) ✅ F3 wt -d 引号 (无 wt -d) ✅ F4 Base64 解码语义错 (无 Base64) ✅ F5 PATH 时序 (绝对路径不依赖 PATH) ✅ F6 claude shim (直调 .ps1) ✅ F8 wt 自身 issue (无 wt) ⚠️ F7 DPAPI 跨用户 (设计限制, 跨用户需重激活) EXE 220672 → 227840 bytes (+7168, ADR-002 profile 注入函数)
2026-04-25 18:19:07 +08:00
:: 2. 定位 claude.ps1 (优先 npm prefix, 兜底常见位置)
set "CLAUDE_PS1="
for /f "delims=" %%i in ('npm config get prefix 2^>nul') do set "NPM_PREFIX=%%i"
if defined NPM_PREFIX if exist "%NPM_PREFIX%\claude.ps1" set "CLAUDE_PS1=%NPM_PREFIX%\claude.ps1"
if not defined CLAUDE_PS1 if exist "%APPDATA%\npm\claude.ps1" set "CLAUDE_PS1=%APPDATA%\npm\claude.ps1"
if not defined CLAUDE_PS1 if exist "%ProgramFiles%\nodejs\claude.ps1" set "CLAUDE_PS1=%ProgramFiles%\nodejs\claude.ps1"
if not defined CLAUDE_PS1 (
echo [!] claude.ps1 未找到. 请重跑 Bookworm-Setup.exe 修复 Claude Code 安装.
pause
exit /b 1
)
feat(v3.0.11): 架构重构 — 启动链路 7 跳 → 1 跳直链 用户报障驱动 (v3.0.3-3.0.10 共 9 轮迭代后接受架构原罪). 旧架构: .lnk → bat → wt → pwsh → Base64 → DPAPI → claude (7 跳) 新架构: .lnk → pwsh → claude.ps1 (1 跳, 凭证由 profile 异步加载) ADR-001 桌面 .lnk 直调 pwsh + claude.ps1 绝对路径 - 安装时 Get-Command claude / npm config get prefix 定位 claude.ps1 - bake 进 .lnk Args, 运行时不依赖任何 PATH 重载 - 自验证: 创建后回读 .lnk 确认 Target/Args 完整, 失败立即删除拒绝交付 ADR-002 DPAPI 凭证加载迁移到 PowerShell profile sentinel - BW_CRED_START..END 块写入 ~/Documents/PowerShell/profile.ps1 - pwsh 启动自动 source, 与启动链路彻底解耦 - profile 编辑用 String.Replace 字面替换 (避开 -replace $ backreference) ADR-003 启动 / 更新功能拆分 - 启动Bookworm.lnk → 仅启动 (1 跳) - 更新Bookworm.lnk → 仅 git pull - 更新并启动Bookworm.bat → 重命名为 更新Bookworm.bat (仅同步) - tools/gen-launcher-bats.ps1 归档 (新架构不需要 Base64 生成器) 8 个失败模式中 7 个被架构性消除: ✅ F1 wt ; 切 tab (无 wt) ✅ F2 cmd 转义 (无 cmd 启动路径) ✅ F3 wt -d 引号 (无 wt -d) ✅ F4 Base64 解码语义错 (无 Base64) ✅ F5 PATH 时序 (绝对路径不依赖 PATH) ✅ F6 claude shim (直调 .ps1) ✅ F8 wt 自身 issue (无 wt) ⚠️ F7 DPAPI 跨用户 (设计限制, 跨用户需重激活) EXE 220672 → 227840 bytes (+7168, ADR-002 profile 注入函数)
2026-04-25 18:19:07 +08:00
:: 3. 直调 pwsh + claude.ps1 (无 wt / 无 Base64 / 无 DPAPI in-bat)
:: 凭证由 pwsh profile.ps1 BW_CRED_START..END 块自动加载
"%PWSH_EXE%" -NoLogo -NoExit -File "%CLAUDE_PS1%" --dangerously-skip-permissions
feat(v3.0.11): 架构重构 — 启动链路 7 跳 → 1 跳直链 用户报障驱动 (v3.0.3-3.0.10 共 9 轮迭代后接受架构原罪). 旧架构: .lnk → bat → wt → pwsh → Base64 → DPAPI → claude (7 跳) 新架构: .lnk → pwsh → claude.ps1 (1 跳, 凭证由 profile 异步加载) ADR-001 桌面 .lnk 直调 pwsh + claude.ps1 绝对路径 - 安装时 Get-Command claude / npm config get prefix 定位 claude.ps1 - bake 进 .lnk Args, 运行时不依赖任何 PATH 重载 - 自验证: 创建后回读 .lnk 确认 Target/Args 完整, 失败立即删除拒绝交付 ADR-002 DPAPI 凭证加载迁移到 PowerShell profile sentinel - BW_CRED_START..END 块写入 ~/Documents/PowerShell/profile.ps1 - pwsh 启动自动 source, 与启动链路彻底解耦 - profile 编辑用 String.Replace 字面替换 (避开 -replace $ backreference) ADR-003 启动 / 更新功能拆分 - 启动Bookworm.lnk → 仅启动 (1 跳) - 更新Bookworm.lnk → 仅 git pull - 更新并启动Bookworm.bat → 重命名为 更新Bookworm.bat (仅同步) - tools/gen-launcher-bats.ps1 归档 (新架构不需要 Base64 生成器) 8 个失败模式中 7 个被架构性消除: ✅ F1 wt ; 切 tab (无 wt) ✅ F2 cmd 转义 (无 cmd 启动路径) ✅ F3 wt -d 引号 (无 wt -d) ✅ F4 Base64 解码语义错 (无 Base64) ✅ F5 PATH 时序 (绝对路径不依赖 PATH) ✅ F6 claude shim (直调 .ps1) ✅ F8 wt 自身 issue (无 wt) ⚠️ F7 DPAPI 跨用户 (设计限制, 跨用户需重激活) EXE 220672 → 227840 bytes (+7168, ADR-002 profile 注入函数)
2026-04-25 18:19:07 +08:00
endlocal