闭合 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)
44 lines
1.8 KiB
Batchfile
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 } }"
|