bookworm-boot/启动Bookworm.bat
bookworm a3b4ff3a78 fix(v3.0.9): Claude 装完 npm prefix 固化 + 三层 PATH + 快捷方式自验证
用户反馈 (核心): '不要客户端修修补补, EXE 必须一次对'

诊断: v3.0.8 Phase 1 全 OK, 但桌面快捷方式 claude.exe not found
  user npm config get prefix = C:\Users\Administrator\AppData\Roaming\npm
  但 Get-Command claude 在 PS 7 为空 → User PATH 没含这个目录
  Node.js MSI 写 User PATH 时机/行为被企业镜像/防病毒/组策略干扰

三层根治:

F1: auto-setup.ps1 装完 Claude Code 后立即 `npm config get prefix` 查真实路径,
    强制写入 User PATH (永久生效). 不依赖 npm 自己的 PATH 注入时机.
F2: gen-launcher-bats Base64 脚本加 3 层 PATH 修复:
    层 1 Machine+User env PATH / 层 2 npm config get prefix 动态查询 /
    层 3 硬编码候选 (%APPDATA%\npm / Program Files\nodejs / LOCALAPPDATA\npm)
F3: auto-setup.ps1:2256 创建桌面快捷方式前 Test-Cmd claude 自验证,
    失败则拒绝创建 + 弹明确错误, 不再静默产出坏快捷方式

EXE 217088 → 220160 bytes (+3072)
Base64 3544 → 5880 chars
产品原则: 点快捷方式要么成功要么给清晰诊断, 不再给 'claude not found' 无头案
2026-04-24 22:39:17 +08:00

54 lines
7.5 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+ACQAbgB1AGwAbAAgAHwAIABTAGUAbABlAGMAdAAtAE8AYgBqAGUAYwB0ACAALQBGAGkAcgBzAHQAIAAxACkALgBUAHIAaQBtACgAKQAKACAAIAAgACAAaQBmACAAKAAkAG4AcABtAFAAcgBlAGYAaQB4ACAALQBhAG4AZAAgACgAVABlAHMAdAAtAFAAYQB0AGgAIAAkAG4AcABtAFAAcgBlAGYAaQB4ACkAIAAtAGEAbgBkACAAKAAkAGUAbgB2ADoAUABhAHQAaAAgAC0AbgBvAHQAbABpAGsAZQAgACIAKgAkAG4AcABtAFAAcgBlAGYAaQB4ACoAIgApACkAIAB7AAoAIAAgACAAIAAgACAAIAAgACQAZQBuAHYAOgBQAGEAdABoACAAPQAgACIAJABuAHAAbQBQAHIAZQBmAGkAeAA7ACQAZQBuAHYAOgBQAGEAdABoACIACgAgACAAIAAgAH0ACgB9ACAAYwBhAHQAYwBoACAAewB9AAoAIwAgAEJcIAAzADoAIAA4XsGJIABuAHAAbQAgAGcAbABvAGIAYQBsACAAbHgWfwF4XFGVXiAAKABuAHAAbQAgACxnq44NTihXIABQAEEAVABIACAA9mXgZdVsIABxAHUAZQByAHkAKQAKACQAbgBwAG0AQwBhAG4AZABpAGQAYQB0AGUAcwAgAD0AIABAACgACgAgACAAIAAgACIAJABlAG4AdgA6AEEAUABQAEQAQQBUAEEAXABuAHAAbQAiACwACgAgACAAIAAgACIAJABlAG4AdgA6AFAAcgBvAGcAcgBhAG0ARgBpAGwAZQBzAFwAbgBvAGQAZQBqAHMAIgAsAAoAIAAgACAAIAAiACQAewBlAG4AdgA6AFAAcgBvAGcAcgBhAG0ARgBpAGwAZQBzACgAeAA4ADYAKQB9AFwAbgBvAGQAZQBqAHMAIgAsAAoAIAAgACAAIAAiACQAZQBuAHYAOgBMAE8AQwBBAEwAQQBQAFAARABBAFQAQQBcAG4AcABtACIACgApAAoAZgBvAHIAZQBhAGMAaAAgACgAJABwACAAaQBuACAAJABuAHAAbQBDAGEAbgBkAGkAZABhAHQAZQBzACkAIAB7AAoAIAAgACAAIABpAGYAIAAoACgAVABlAHMAdAAtAFAAYQB0AGgAIAAkAHAAKQAgAC0AYQBuAGQAIAAoAFQAZQBzAHQALQBQAGEAdABoACAAKABKAG8AaQBuAC0AUABhAHQAaAAgACQAcAAgACcAYwBsAGEAdQBkAGUALgBwAHMAMQAnACkAIAAtAG8AcgAgACgAVABlAHMAdAAtAFAAYQB0AGgAIAAoAEoAbwBpAG4ALQBQAGEAdABoACAAJABwACAAJwBjAGwAYQB1AGQAZQAuAGMAbQBkACcAKQApACkAIAAtAGEAbgBkACAAKAAkAGUAbgB2ADoAUABhAHQAaAAgAC0AbgBvAHQAbABpAGsAZQAgACIAKgAkAHAAKgAiACkAKQAgAHsACgAgACAAIAAgACAAIAAgACAAJABlAG4AdgA6AFAAYQB0AGgAIAA9ACAAIgAkAHAAOwAkAGUAbgB2ADoAUABhAHQAaAAiAAoAIAAgACAAIAB9AAoAfQAKACMAIABEAFAAQQBQAEkAIACgUn2PE39YW+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
)