@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