bookworm-boot/更新Bookworm.bat
bookworm 7c8540b542 feat(v3.1.1): E2E 护栏 + UX 4 项闭合 + 并发安全
闭合 v3.1.0 后续 4 个 HIGH 局限:

[L8] smoke 覆盖不到 .lnk 行为 → 引入 tools/test-launcher-e2e.ps1
  4 测试套: PARSE / wrapper 6 特性 / .lnk Args 6 契约 / profile 双注入契约
  集成到 build.ps1 后置, 失败 exit 1 拒绝发布
  闭合 v3.0.10 -or 类 PSParser 漏网 bug 风险

[L5] Phase 1 总结弹窗仅有动作时弹 → 始终弹
  老用户全就绪重跑 EXE 跳过总结不知是否完成
  v3.1.1 移除条件, 永远显示 (零新装也弹 OK 态)

[L6] 更新.bat 完成无反馈 → GUI YesNo 询问立即启动
  PS MessageBox: '同步完成. 是否立即启动 Claude?' Yes 触发 Start-Process 桌面 .lnk

[L7] profile 注入并发损坏 → FileShare.None 排他锁 + 5 次重试
  WriteAllText 隐式 FileShare.Read 改为显式 FileStream
  IOException catch sleep 50ms 重试, 5 次都失败 throw 触发 v3.1.0 显式弹窗

8/12 局限闭合 (剩余 L9-L12 计划 v3.1.2)
2026-04-25 23:16:08 +08:00

44 lines
1.8 KiB
Batchfile

@echo off
chcp 65001 > nul
cd /d "%~dp0"
:: v3.1.1 架构: 更新 .bat 仅做 git pull, 完成后弹 GUI 让用户决定是否立即启动.
:: 启动 claude 由独立的 启动Bookworm.lnk → pwsh + bw-launch.ps1 完成 (1 跳直链)
echo.
echo Bookworm 配置同步
echo ============================================
echo.
set HAS_FAIL=0
:: 同步 bookworm-boot 仓库 (本目录)
echo [1/2] 同步启动器目录 (bookworm-boot)...
git pull --rebase 2>&1
if %errorlevel% neq 0 (
echo [!] bookworm-boot git pull 失败 ^(不影响启动 lnk^)
set HAS_FAIL=1
)
:: 同步 ~/.claude 配置仓库 (Skill/hook/agents)
echo.
echo [2/2] 同步 Claude 配置 (.claude/)...
git -C "%USERPROFILE%\.claude" pull --rebase 2>&1
if %errorlevel% neq 0 (
echo [!] .claude git pull 失败 ^(不影响启动 lnk^)
set HAS_FAIL=1
)
echo.
echo ============================================
if %HAS_FAIL% equ 0 (
echo [OK] 所有同步完成
) else (
echo [!] 部分同步失败 ^(详见上方日志, 启动仍可正常使用^)
)
echo ============================================
:: v3.1.1 (闭合 L6): 完成后 GUI 询问是否立即启动 Claude (闭合 "更新完了不知道下一步")
:: 用 PowerShell 弹 MessageBox YesNo, Yes → 触发桌面启动 lnk; No → 直接退出
where pwsh >nul 2>nul && set "PSH=pwsh" || set "PSH=powershell"
%PSH% -NoProfile -Command "Add-Type -AssemblyName System.Windows.Forms; $r = [System.Windows.Forms.MessageBox]::Show('配置同步完成. 是否立即启动 Bookworm Claude?', 'Bookworm 同步完成', 'YesNo', 'Question'); if ($r -eq 'Yes') { $lnk = Join-Path ([Environment]::GetFolderPath('Desktop')) '启动Bookworm.lnk'; if (Test-Path $lnk) { Start-Process $lnk } else { Write-Host 'lnk 缺失, 请重跑 Bookworm-Setup.exe' -ForegroundColor Yellow; pause } }"