bookworm-boot/更新Bookworm.bat

46 lines
1.9 KiB
Batchfile
Raw Permalink Normal View History

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
@echo off
chcp 65001 > nul
cd /d "%~dp0"
:: v3.1.1 架构: 更新 .bat 仅做 git pull, 完成后弹 GUI 让用户决定是否立即启动.
:: 启动 claude 由独立的 启动Bookworm.lnk → pwsh + bw-launch.ps1 完成 (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
echo.
echo Bookworm 配置同步
echo ============================================
echo.
set HAS_FAIL=0
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
:: 同步 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
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
)
:: 同步 ~/.claude 配置仓库 (Skill/hook/agents)
echo.
echo [2/2] 同步 Claude 配置 (.claude/)...
git -C "%USERPROFILE%\.claude" stash -q 2>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
git -C "%USERPROFILE%\.claude" pull --rebase 2>&1
if %errorlevel% neq 0 (
echo [!] .claude git pull 失败 ^(不影响启动 lnk^)
set HAS_FAIL=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
)
git -C "%USERPROFILE%\.claude" stash pop -q 2>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
echo.
echo ============================================
if %HAS_FAIL% equ 0 (
echo [OK] 所有同步完成
) else (
echo [!] 部分同步失败 ^(详见上方日志, 启动仍可正常使用^)
)
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
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 } }"