bookworm-boot/Bookworm-OneClick.bat

260 lines
10 KiB
Batchfile
Raw Normal View History

@echo off
chcp 65001 > nul 2>&1
title Bookworm Smart Assistant - 全自动安装
:: ─── 自动提升管理员权限 ──
:: 用 goto 而非 if() 避免文件名含括号(如"(2)")导致解析崩溃
net session >nul 2>&1
if %errorlevel% equ 0 goto :IS_ADMIN
echo 需要管理员权限来安装软件,正在请求...
echo Set objShell = CreateObject("Shell.Application") > "%TEMP%\bw_elevate.vbs"
echo objShell.ShellExecute "cmd.exe", "/k cd /d ""%~dp0"" & ""%~nx0""", "", "runas", 1 >> "%TEMP%\bw_elevate.vbs"
cscript //nologo "%TEMP%\bw_elevate.vbs"
del /f /q "%TEMP%\bw_elevate.vbs" 2>nul
exit /b
:IS_ADMIN
:: ─── 初始化 ─────────────────────────────────────────
setlocal EnableDelayedExpansion
color 1F
set "NO_PROXY=bww.letcareme.com,code.letcareme.com,letcareme.com,localhost,127.0.0.1"
set "no_proxy=%NO_PROXY%"
set "INSTALL_DIR=%USERPROFILE%\bookworm-boot"
set "GITEA_URL=https://code.letcareme.com/bookworm/bookworm-boot.git"
set "ERRORS=0"
set "NEED_PATH_REFRESH=0"
echo.
echo +============================================================+
echo ^| ^|
echo ^| Bookworm Smart Assistant ^|
echo ^| 全自动安装程序 v2.0 ^|
echo ^| ^|
echo ^| 全新电脑? 没问题! 双击即可, 全程无需手动操作 ^|
echo ^| ^|
echo ^| 自动安装: Node.js + Git + Claude Code + Bookworm 配置 ^|
echo ^| ^|
echo +============================================================+
echo.
:: ─── 步骤 1/7: winget 检测 ──────────────────────────
echo [1/7] 检测包管理器...
where winget >nul 2>nul
if %errorlevel% neq 0 (
echo.
echo [!!] winget 未安装 (Windows 10 1809+ / Windows 11 自带)
echo.
echo 请先安装 "应用安装程序":
echo 1. 打开 Microsoft Store
echo 2. 搜索 "应用安装程序""App Installer"
echo 3. 点击安装/更新
echo 4. 安装后重新运行本程序
echo.
pause
exit /b 1
)
echo [OK] winget 可用
echo.
:: ─── 步骤 2/7: 安装 Git ────────────────────────────
echo [2/7] 检查 Git...
where git >nul 2>nul
if %errorlevel% neq 0 (
echo [..] Git 未安装, 正在通过 winget 安装...
winget install Git.Git --accept-source-agreements --accept-package-agreements --silent
if !errorlevel! neq 0 (
echo [!!] Git 安装失败
set /a ERRORS+=1
) else (
echo [OK] Git 安装成功
set "NEED_PATH_REFRESH=1"
)
) else (
echo [OK] Git 已安装
)
echo.
:: ─── 步骤 3/7: 安装 Node.js ────────────────────────
echo [3/7] 检查 Node.js...
where node >nul 2>nul
if %errorlevel% neq 0 (
echo [..] Node.js 未安装, 正在通过 winget 安装...
winget install OpenJS.NodeJS.LTS --accept-source-agreements --accept-package-agreements --silent
if !errorlevel! neq 0 (
echo [!!] Node.js 安装失败
set /a ERRORS+=1
) else (
echo [OK] Node.js LTS 安装成功
set "NEED_PATH_REFRESH=1"
)
) else (
echo [OK] Node.js 已安装
)
echo.
:: ─── 刷新 PATH (新装软件需要) ────────────────────────
if "%NEED_PATH_REFRESH%"=="1" (
echo [..] 刷新系统 PATH...
:: 重新加载 Machine + User PATH
for /f "tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path 2^>nul') do set "SYS_PATH=%%b"
for /f "tokens=2*" %%a in ('reg query "HKCU\Environment" /v Path 2^>nul') do set "USR_PATH=%%b"
set "PATH=!SYS_PATH!;!USR_PATH!"
:: 同时添加常见 Node.js / Git 路径
set "PATH=!PATH!;C:\Program Files\nodejs;C:\Program Files\Git\cmd;C:\Program Files\Git\usr\bin"
echo [OK] PATH 已刷新
echo.
)
:: ─── 二次验证: Git + Node ────────────────────────────
where git >nul 2>nul
if %errorlevel% neq 0 (
echo [FATAL] Git 仍然不可用
echo 请关闭此窗口, 手动安装 Git 后重新运行
pause
exit /b 1
)
where node >nul 2>nul
if %errorlevel% neq 0 (
echo [FATAL] Node.js 仍然不可用
echo 请关闭此窗口, 手动安装 Node.js 后重新运行
pause
exit /b 1
)
:: ─── 步骤 4/7: 安装 Claude Code ─────────────────────
echo [4/7] 检查 Claude Code...
:: 国内 npm 镜像 - 淘宝源, 避免 npmjs.org 超时
call npm config set registry https://registry.npmmirror.com 2>nul
where claude >nul 2>nul
if %errorlevel% neq 0 (
echo [..] Claude Code 未安装, 正在通过 npm 安装 - 淘宝镜像加速...
call npm i -g @anthropic-ai/claude-code 2>&1
if !errorlevel! neq 0 (
echo [!!] Claude Code 安装失败
echo 请手动运行: npm i -g @anthropic-ai/claude-code
set /a ERRORS+=1
) else (
echo [OK] Claude Code 安装成功
)
) else (
echo [OK] Claude Code 已安装
)
echo.
:: ─── 步骤 5/7: 克隆/更新 Bookworm ──────────────────
echo [5/7] 同步 Bookworm 配置...
:: 配置 git credential helper (免重复输密码)
git config --global credential.helper manager 2>nul
if exist "%INSTALL_DIR%\.git" (
echo 已有安装, 更新到最新版...
pushd "%INSTALL_DIR%"
git pull 2>&1
popd
) else (
if exist "%INSTALL_DIR%" (
echo 清理非 git 目录后重新下载...
rmdir /s /q "%INSTALL_DIR%" 2>nul
)
echo 首次下载 (需要输入 Gitea 用户名密码)...
git clone "%GITEA_URL%" "%INSTALL_DIR%" 2>&1
if !errorlevel! neq 0 (
echo.
echo [!!] 下载失败, 请检查:
echo - 网络是否正常
echo - Gitea 用户名密码是否正确
echo - 管理员是否已开通访问权限
echo.
pause
exit /b 1
)
)
echo [OK] Bookworm 文件已就绪
echo.
:: ─── 步骤 6/7: 执行安装配置 ────────────────────────
echo [6/7] 执行安装配置...
echo.
if exist "%INSTALL_DIR%\install.ps1" (
:: 优先 pwsh (PowerShell 7), 回退 powershell (5.1)
where pwsh >nul 2>nul
if !errorlevel! equ 0 (
pwsh -NoLogo -ExecutionPolicy Bypass -File "%INSTALL_DIR%\install.ps1" -AutoAccept
) else (
powershell -NoLogo -ExecutionPolicy Bypass -File "%INSTALL_DIR%\install.ps1" -AutoAccept
)
) else (
echo [WARN] install.ps1 未找到, 跳过高级配置
)
echo.
:: ─── 步骤 7/7: 创建桌面快捷方式 + 完成 ──────────────
echo [7/7] 创建桌面快捷方式...
:: 用 PowerShell 创建快捷方式
powershell -ExecutionPolicy Bypass -Command ^
"try{$s=(New-Object -COM WScript.Shell).CreateShortcut([IO.Path]::Combine([Environment]::GetFolderPath('Desktop'),'Bookworm.lnk'));^
$s.TargetPath='%INSTALL_DIR%\启动Bookworm.bat';^
$s.WorkingDirectory='%INSTALL_DIR%';^
$s.Description='Bookworm Smart Assistant';^
$s.Save();Write-Host ' [OK] 桌面快捷方式: Bookworm' -Fore Green}catch{Write-Host ' [!] 快捷方式创建失败' -Fore Yellow}" 2>nul
powershell -ExecutionPolicy Bypass -Command ^
"try{$s=(New-Object -COM WScript.Shell).CreateShortcut([IO.Path]::Combine([Environment]::GetFolderPath('Desktop'),'更新Bookworm.lnk'));^
$s.TargetPath='%INSTALL_DIR%\更新并启动Bookworm.bat';^
$s.WorkingDirectory='%INSTALL_DIR%';^
$s.Description='Bookworm 更新并启动';^
$s.Save();Write-Host ' [OK] 桌面快捷方式: 更新Bookworm' -Fore Green}catch{Write-Host ' [!] 快捷方式创建失败' -Fore Yellow}" 2>nul
:: 打开使用教程
if exist "%INSTALL_DIR%\guide.html" (
start "" "%INSTALL_DIR%\guide.html"
)
echo.
echo +============================================================+
echo ^| ^|
echo ^| 安装完成! ^|
echo ^| ^|
echo ^| 已安装: ^|
echo ^| [v] Node.js LTS — JavaScript 运行时 ^|
echo ^| [v] Git — 版本控制与配置同步 ^|
echo ^| [v] Claude Code — AI 编程助手 ^|
echo ^| [v] Bookworm — 92 Skills / 18 Agents ^|
echo ^| ^|
echo ^| 桌面快捷方式: ^|
echo ^| Bookworm — 日常启动 ^|
echo ^| 更新Bookworm — 同步最新版后启动 ^|
echo ^| ^|
echo ^| 首次启动需要输入管理员提供的主密码 ^|
echo ^| ^|
echo +============================================================+
echo.
if %ERRORS% gtr 0 (
echo [注意] 安装过程中有 %ERRORS% 个警告, 请查看上方日志
echo.
)
echo 按任意键启动 Bookworm...
pause > nul
:: 启动
cd /d "%INSTALL_DIR%"
if exist "启动Bookworm.bat" (
call "启动Bookworm.bat"
) else (
where pwsh >nul 2>nul
if !errorlevel! equ 0 (
pwsh -NoLogo -ExecutionPolicy Bypass -File install.ps1 -StartOnly -AutoAccept
) else (
powershell -NoLogo -ExecutionPolicy Bypass -File install.ps1 -StartOnly -AutoAccept
)
)
endlocal