bookworm-boot/启动Bookworm.bat
bookworm 609e82bac0 hotfix(v3.0.10): Base64 '-or' 括号 bug + dry-run 实跑验证护栏
v3.0.9 Base64 脚本启动即报:
  Test-Path: A parameter cannot be found that matches parameter name 'or'.
  claude.exe not found

根因: 'Test-Path (Join-Path $p claude.ps1) -or (Test-Path ...)' 中 -or
被当成 Test-Path 的命名参数. PSParser 静态检查看合法, 运行时炸.

修复:
  F1: 括号修正 — $hasClaude 抽为独立变量, 三元 -or 每项带外括号
  F2: gen-launcher-bats.ps1 强制加 dry-run 实跑验证护栏
      解码后的 Base64 脚本必须被 pwsh -File 实跑到底部 __BW_DRYRUN_OK__
      才算通过. 检查 ErrorRecord / ParameterBindingException / 未知命令.
      任何未来 Base64 改动都被此验证拦截.

验证层级教训:
  PSParser = 抓语法   / 抓不到参数绑定错
  dry-run  = 抓运行时 / 抓不到业务逻辑
  smoke    = 抓业务   / 需要前两层通过

EXE 220160 → 220672 bytes (+512)
2026-04-24 22:48:08 +08:00

54 lines
7.8 KiB
Batchfile

@echo off
chcp 65001 > nul
cd /d "%~dp0"
:: 中转站在国内,不走代理
set NO_PROXY=bww.letcareme.com,code.letcareme.com,letcareme.com,localhost,127.0.0.1
set no_proxy=%NO_PROXY%
:: 静默自动更新 (bookworm-boot + .claude 配置, 失败不阻断启动)
echo [..] 检查更新...
git pull --rebase >nul 2>nul
git -C "%USERPROFILE%\.claude" pull --rebase >nul 2>nul
set USE_WT=0
where wt >nul 2>nul && set USE_WT=1
set USE_PWSH7=0
where pwsh >nul 2>nul && set USE_PWSH7=1
:: v3.0.6: Base64-UTF-16LE (PATH 重载 + DPAPI 凭证加载 + claude 诊断 + 启动)
:: 纯 A-Za-z0-9+/= 字符集, 避免 wt.exe 的 ';' 切 tab 误切 (修复 64856bc 症状一)
:: -d "%CD%" 无尾反斜杠, 避免 -d "%~dp0" 的转义引号 (修复 0c33109 症状二)
:: 重新生成: pwsh -NoProfile -File tools/gen-launcher-bats.ps1
set ENC=QQBkAGQALQBUAHkAcABlACAALQBBAHMAcwBlAG0AYgBsAHkATgBhAG0AZQAgAFMAeQBzAHQAZQBtAC4AUwBlAGMAdQByAGkAdAB5AAoAIwAgAEJcIAAxADoAIABNAGEAYwBoAGkAbgBlACAAKwAgAFUAcwBlAHIAIABlAG4AdgAgAFAAQQBUAEgAIAAoAAdoxlEgAFcAaQBuAGQAbwB3AHMAIACvc4NY2FPPkSkACgAkAGUAbgB2ADoAUABhAHQAaAAgAD0AIABbAEUAbgB2AGkAcgBvAG4AbQBlAG4AdABdADoAOgBHAGUAdABFAG4AdgBpAHIAbwBuAG0AZQBuAHQAVgBhAHIAaQBhAGIAbABlACgAJwBQAGEAdABoACcALAAnAE0AYQBjAGgAaQBuAGUAJwApACAAKwAgACcAOwAnACAAKwAgAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AEcAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAnAFAAYQB0AGgAJwAsACcAVQBzAGUAcgAnACkACgAjACAAQlwgADIAOgAgAG4AcABtACAAYwBvAG4AZgBpAGcAIABnAGUAdAAgAHAAcgBlAGYAaQB4ACAAKAAfd55bIABuAHAAbQAgAGhRQFzudlVfLAAgAHxRuVsgAG4AdgBtAC8AZgBuAG0ALwAHaMZRiVvFiC8AUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwApAAoAdAByAHkAIAB7AAoAIAAgACAAIAAkAG4AcABtAFAAcgBlAGYAaQB4ACAAPQAgACgAJgAgAG4AcABtACAAYwBvAG4AZgBpAGcAIABnAGUAdAAgAHAAcgBlAGYAaQB4ACAAMgA+ACQAbgB1AGwAbAAgAHwAIABTAGUAbABlAGMAdAAtAE8AYgBqAGUAYwB0ACAALQBGAGkAcgBzAHQAIAAxACkALgBUAHIAaQBtACgAKQAKACAAIAAgACAAaQBmACAAKAAkAG4AcABtAFAAcgBlAGYAaQB4ACAALQBhAG4AZAAgACgAVABlAHMAdAAtAFAAYQB0AGgAIAAkAG4AcABtAFAAcgBlAGYAaQB4ACkAIAAtAGEAbgBkACAAKAAkAGUAbgB2ADoAUABhAHQAaAAgAC0AbgBvAHQAbABpAGsAZQAgACIAKgAkAG4AcABtAFAAcgBlAGYAaQB4ACoAIgApACkAIAB7AAoAIAAgACAAIAAgACAAIAAgACQAZQBuAHYAOgBQAGEAdABoACAAPQAgACIAJABuAHAAbQBQAHIAZQBmAGkAeAA7ACQAZQBuAHYAOgBQAGEAdABoACIACgAgACAAIAAgAH0ACgB9ACAAYwBhAHQAYwBoACAAewB9AAoAIwAgAEJcIAAzADoAIAA4XsGJIABuAHAAbQAgAGcAbABvAGIAYQBsACAAbHgWfwF4XFGVXiAAKABuAHAAbQAgACxnq44NTihXIABQAEEAVABIACAA9mXgZdVsIABxAHUAZQByAHkAKQAKACQAbgBwAG0AQwBhAG4AZABpAGQAYQB0AGUAcwAgAD0AIABAACgACgAgACAAIAAgACIAJABlAG4AdgA6AEEAUABQAEQAQQBUAEEAXABuAHAAbQAiACwACgAgACAAIAAgACIAJABlAG4AdgA6AFAAcgBvAGcAcgBhAG0ARgBpAGwAZQBzAFwAbgBvAGQAZQBqAHMAIgAsAAoAIAAgACAAIAAiACQAewBlAG4AdgA6AFAAcgBvAGcAcgBhAG0ARgBpAGwAZQBzACgAeAA4ADYAKQB9AFwAbgBvAGQAZQBqAHMAIgAsAAoAIAAgACAAIAAiACQAZQBuAHYAOgBMAE8AQwBBAEwAQQBQAFAARABBAFQAQQBcAG4AcABtACIACgApAAoAZgBvAHIAZQBhAGMAaAAgACgAJABwACAAaQBuACAAJABuAHAAbQBDAGEAbgBkAGkAZABhAHQAZQBzACkAIAB7AAoAIAAgACAAIABpAGYAIAAoAC0AbgBvAHQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAJABwACkAKQAgAHsAIABjAG8AbgB0AGkAbgB1AGUAIAB9AAoAIAAgACAAIAAkAGgAYQBzAEMAbABhAHUAZABlACAAPQAgACgAVABlAHMAdAAtAFAAYQB0AGgAIAAoAEoAbwBpAG4ALQBQAGEAdABoACAAJABwACAAJwBjAGwAYQB1AGQAZQAuAHAAcwAxACcAKQApACAALQBvAHIAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAKABKAG8AaQBuAC0AUABhAHQAaAAgACQAcAAgACcAYwBsAGEAdQBkAGUALgBjAG0AZAAnACkAKQAgAC0AbwByACAAKABUAGUAcwB0AC0AUABhAHQAaAAgACgASgBvAGkAbgAtAFAAYQB0AGgAIAAkAHAAIAAnAGMAbABhAHUAZABlACcAKQApAAoAIAAgACAAIABpAGYAIAAoACQAaABhAHMAQwBsAGEAdQBkAGUAIAAtAGEAbgBkACAAKAAkAGUAbgB2ADoAUABhAHQAaAAgAC0AbgBvAHQAbABpAGsAZQAgACIAKgAkAHAAKgAiACkAKQAgAHsACgAgACAAIAAgACAAIAAgACAAJABlAG4AdgA6AFAAYQB0AGgAIAA9ACAAIgAkAHAAOwAkAGUAbgB2ADoAUABhAHQAaAAiAAoAIAAgACAAIAB9AAoAfQAKACMAIABEAFAAQQBQAEkAIACgUn2PE39YW+1RwYsKACQAcgAgAD0AIAAnAEgASwBDAFUAOgBcAFMAbwBmAHQAdwBhAHIAZQBcAEIAbwBvAGsAdwBvAHIAbQBcAEMAYQBjAGgAZQBkAEUAbgB2ACcACgB0AHIAeQAgAHsACgAgACAAKABHAGUAdAAtAEkAdABlAG0AUAByAG8AcABlAHIAdAB5ACAAJAByACAALQBFAEEAIABTAHQAbwBwACkALgBQAFMATwBiAGoAZQBjAHQALgBQAHIAbwBwAGUAcgB0AGkAZQBzACAAfAAgAFcAaABlAHIAZQAtAE8AYgBqAGUAYwB0ACAAewAgACQAXwAuAE4AYQBtAGUAIAAtAG0AYQB0AGMAaAAgACcAXgBbAEEALQBaAF8AXQArACQAJwAgAH0AIAB8ACAARgBvAHIARQBhAGMAaAAtAE8AYgBqAGUAYwB0ACAAewAKACAAIAAgACAAJAB2ACAAPQAgACQAXwAuAFYAYQBsAHUAZQAKACAAIAAgACAAdAByAHkAIAB7AAoAIAAgACAAIAAgACAAJABiACAAPQAgAFsAUwBlAGMAdQByAGkAdAB5AC4AQwByAHkAcAB0AG8AZwByAGEAcABoAHkALgBQAHIAbwB0AGUAYwB0AGUAZABEAGEAdABhAF0AOgA6AFUAbgBwAHIAbwB0AGUAYwB0ACgAWwBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIAaQBuAGcAKAAkAHYAKQAsACAAJABuAHUAbABsACwAIABbAFMAZQBjAHUAcgBpAHQAeQAuAEMAcgB5AHAAdABvAGcAcgBhAHAAaAB5AC4ARABhAHQAYQBQAHIAbwB0AGUAYwB0AGkAbwBuAFMAYwBvAHAAZQBdADoAOgBDAHUAcgByAGUAbgB0AFUAcwBlAHIAKQAKACAAIAAgACAAIAAgACQAdgAgAD0AIABbAFQAZQB4AHQALgBFAG4AYwBvAGQAaQBuAGcAXQA6ADoAVQBUAEYAOAAuAEcAZQB0AFMAdAByAGkAbgBnACgAJABiACkACgAgACAAIAAgAH0AIABjAGEAdABjAGgAIAB7AH0ACgAgACAAIAAgAFsARQBuAHYAaQByAG8AbgBtAGUAbgB0AF0AOgA6AFMAZQB0AEUAbgB2AGkAcgBvAG4AbQBlAG4AdABWAGEAcgBpAGEAYgBsAGUAKAAkAF8ALgBOAGEAbQBlACwAIAAkAHYALAAgACcAUAByAG8AYwBlAHMAcwAnACkACgAgACAAfQAKAH0AIABjAGEAdABjAGgAIAB7AH0ACgBpAGYAIAAoAC0AbgBvAHQAIAAoAEcAZQB0AC0AQwBvAG0AbQBhAG4AZAAgAGMAbABhAHUAZABlACAALQBFAHIAcgBvAHIAQQBjAHQAaQBvAG4AIABTAGkAbABlAG4AdABsAHkAQwBvAG4AdABpAG4AdQBlACkAKQAgAHsACgAgACAAVwByAGkAdABlAC0ASABvAHMAdAAgACcAJwAKACAAIABXAHIAaQB0AGUALQBIAG8AcwB0ACAAJwAgACAAWwAhAF0AIABjAGwAYQB1AGQAZQAgAH1U5E4qZ35iMFIgACgA8l0dXNWLIAAzACAAQlwgAFAAQQBUAEgAIADuTw1ZzU4xWSWNKQAnACAALQBGAG8AcgBlAGcAcgBvAHUAbgBkAEMAbwBsAG8AcgAgAFIAZQBkAAoAIAAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAnACcACgAgACAAVwByAGkAdABlAC0ASABvAHMAdAAgACcAIAAgAMqLrWXhT29gOgAnACAALQBGAG8AcgBlAGcAcgBvAHUAbgBkAEMAbwBsAG8AcgAgAFkAZQBsAGwAbwB3AAoAIAAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiACAAIAAgACAAbgBwAG0AIABwAHIAZQBmAGkAeAA6ACAAJAAoAHQAcgB5ACAAewAgACgAJgAgAG4AcABtACAAYwBvAG4AZgBpAGcAIABnAGUAdAAgAHAAcgBlAGYAaQB4ACAAMgA+ACQAbgB1AGwAbAApACAAfQAgAGMAYQB0AGMAaAAgAHsAIAAnACgAbgBwAG0AIAANTu9TKHUpACcAIAB9ACkAIgAgAC0ARgBvAHIAZQBnAHIAbwB1AG4AZABDAG8AbABvAHIAIABHAHIAYQB5AAoAIAAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAnACAAIAAgACAAUABBAFQASAAgAEdytWsgACgAbgBwAG0ALwBuAG8AZABlAGoAcwAvAHAAdwBzAGgALwBHAGkAdAApADoAJwAgAC0ARgBvAHIAZQBnAHIAbwB1AG4AZABDAG8AbABvAHIAIABHAHIAYQB5AAoAIAAgACgAJABlAG4AdgA6AFAAYQB0AGgAIAAtAHMAcABsAGkAdAAgACcAOwAnACkAIAB8ACAAVwBoAGUAcgBlAC0ATwBiAGoAZQBjAHQAIAB7ACAAJABfACAALQBtAGEAdABjAGgAIAAnAG4AcABtAHwAbgBvAGQAZQBqAHMAfABwAHcAcwBoAHwARwBpAHQAJwAgAH0AIAB8ACAARgBvAHIARQBhAGMAaAAtAE8AYgBqAGUAYwB0ACAAewAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiACAAIAAgACAAIAAgACQAXwAiACAALQBGAG8AcgBlAGcAcgBvAHUAbgBkAEMAbwBsAG8AcgAgAEQAYQByAGsARwByAGEAeQAgAH0ACgAgACAAVwByAGkAdABlAC0ASABvAHMAdAAgACcAJwAKACAAIABXAHIAaQB0AGUALQBIAG8AcwB0ACAAJwAgACAA7k8NWToAIADNkbBl0I9MiCAAQgBvAG8AawB3AG8AcgBtAC0AUwBlAHQAdQBwAC4AZQB4AGUAIAAoAHYAMwAuADAALgA5ACsAKQAgAHNT71PqgahSZYhoUScAIAAtAEYAbwByAGUAZwByAG8AdQBuAGQAQwBvAGwAbwByACAARwByAGUAZQBuAAoAIAAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAnACcACgAgACAAUgBlAGEAZAAtAEgAbwBzAHQAIAAnAAlj3lZmj3NR7ZUnAAoAIAAgAHIAZQB0AHUAcgBuAAoAfQAKACYAIABjAGwAYQB1AGQAZQAgAC0ALQBkAGEAbgBnAGUAcgBvAHUAcwBsAHkALQBzAGsAaQBwAC0AcABlAHIAbQBpAHMAcwBpAG8AbgBzAA==
:: 优先路径: wt + pwsh7
if %USE_WT% equ 1 if %USE_PWSH7% equ 1 (
start "" wt new-tab --title "Bookworm Smart Assistant" -d "%CD%" -- pwsh -NoLogo -NoExit -EncodedCommand %ENC%
exit
)
:: 路径 2: wt + powershell 5.1
if %USE_WT% equ 1 if %USE_PWSH7% equ 0 (
start "" wt new-tab --title "Bookworm Smart Assistant" -d "%CD%" -- powershell -NoLogo -ExecutionPolicy Bypass -NoExit -EncodedCommand %ENC%
exit
)
:: 路径 3: conhost + pwsh7 (无 wt 就不会有 ; 切 tab 问题, 但仍用 Base64 统一)
if %USE_PWSH7% equ 1 (
start "Bookworm Smart Assistant" pwsh -NoLogo -NoExit -EncodedCommand %ENC%
exit
)
:: 路径 4: 回退 PowerShell 5.1 (最低保障, 交给 install.ps1 -StartOnly 处理)
title Bookworm Portable
echo.
echo [!] PowerShell 7 未安装, 使用 PowerShell 5.1
echo.
powershell -ExecutionPolicy Bypass -File install.ps1 -StartOnly -AutoAccept
if %errorlevel% neq 0 (
echo.
echo 启动失败,按任意键退出...
pause > nul
)