Files
JoyD/Claw/scripts/deploy.bat
2026-03-16 15:47:55 +08:00

149 lines
5.6 KiB
Batchfile

@echo off
echo 🚀 开始部署 Claw 项目...
echo 📅 部署时间: %date% %time%
REM 检查是否以管理员身份运行
net session >nul 2>&1
if %errorlevel% neq 0 (
echo ⚠️ 警告:请以管理员身份运行此脚本以获得最佳效果
pause
)
REM 设置部署参数
set DEPLOY_DIR=C:\Claw
set SERVICE_NAME_GATEWAY=ClawGateway
set SERVICE_NAME_SMARTCLAW=ClawSmartClaw
echo 📋 部署配置:
echo 部署目录: %DEPLOY_DIR%
echo 网关服务名称: %SERVICE_NAME_GATEWAY%
echo SmartClaw服务名称: %SERVICE_NAME_SMARTCLAW%
REM 创建部署目录
echo 📁 创建部署目录...
if not exist "%DEPLOY_DIR%" mkdir "%DEPLOY_DIR%"
if not exist "%DEPLOY_DIR%\gateway" mkdir "%DEPLOY_DIR%\gateway"
if not exist "%DEPLOY_DIR%\smartclaw" mkdir "%DEPLOY_DIR%\smartclaw"
if not exist "%DEPLOY_DIR%\web" mkdir "%DEPLOY_DIR%\web"
if not exist "%DEPLOY_DIR%\logs" mkdir "%DEPLOY_DIR%\logs"
REM 复制文件
echo 📦 复制构建产物...
cd /d "%~dp0.."
echo 复制网关服务...
copy /Y "build\gateway\gateway.exe" "%DEPLOY_DIR%\gateway\"
copy /Y "Server\gateway\.env" "%DEPLOY_DIR%\gateway\.env" 2>nul
copy /Y "Server\gateway\.env.example" "%DEPLOY_DIR%\gateway\.env.example" 2>nul
echo 复制 SmartClaw 服务...
copy /Y "build\SmartClaw\smartclaw.exe" "%DEPLOY_DIR%\smartclaw\"
copy /Y "Server\SmartClaw\.env" "%DEPLOY_DIR%\smartclaw\.env" 2>nul
copy /Y "Server\SmartClaw\.env.example" "%DEPLOY_DIR%\smartclaw\.env.example" 2>nul
echo 复制 Web 前端...
xcopy /E /Y "build\web\*" "%DEPLOY_DIR%\web\"
echo 复制配置文件...
copy /Y "README.md" "%DEPLOY_DIR%\"
copy /Y "docs\企业微信配置指南.md" "%DEPLOY_DIR%\"
REM 创建 Windows 服务(可选)
echo 🔧 配置 Windows 服务...
echo 注意:服务安装需要管理员权限
choice /C YN /M "是否安装为 Windows 服务"
if %errorlevel%==1 (
echo 正在安装服务...
REM 创建服务启动脚本
echo @echo off > "%DEPLOY_DIR%\gateway\start.bat"
echo cd /d "%~dp0" >> "%DEPLOY_DIR%\gateway\start.bat"
echo gateway.exe >> "%DEPLOY_DIR%\gateway\start.bat"
echo @echo off > "%DEPLOY_DIR%\smartclaw\start.bat"
echo cd /d "%~dp0" >> "%DEPLOY_DIR%\smartclaw\start.bat"
echo smartclaw.exe >> "%DEPLOY_DIR%\smartclaw\start.bat"
REM 安装服务(使用 sc 命令)
sc query %SERVICE_NAME_GATEWAY% >nul 2>&1
if %errorlevel%==0 (
echo 停止现有网关服务...
sc stop %SERVICE_NAME_GATEWAY%
timeout /t 5 /nobreak >nul
sc delete %SERVICE_NAME_GATEWAY%
)
sc query %SERVICE_NAME_SMARTCLAW% >nul 2>&1
if %errorlevel%==0 (
echo 停止现有 SmartClaw 服务...
sc stop %SERVICE_NAME_SMARTCLAW%
timeout /t 5 /nobreak >nul
sc delete %SERVICE_NAME_SMARTCLAW%
)
echo 创建新服务...
sc create %SERVICE_NAME_GATEWAY% binPath= "%DEPLOY_DIR%\gateway\gateway.exe" start= auto DisplayName= "Claw Gateway Service"
sc create %SERVICE_NAME_SMARTCLAW% binPath= "%DEPLOY_DIR%\smartclaw\smartclaw.exe" start= auto DisplayName= "Claw SmartClaw Service"
echo 设置服务描述...
sc description %SERVICE_NAME_GATEWAY% "Claw 项目网关服务 - 企业微信智能助手"
sc description %SERVICE_NAME_SMARTCLAW% "Claw 项目 SmartClaw 服务 - 智能任务处理"
echo 启动服务...
sc start %SERVICE_NAME_GATEWAY%
sc start %SERVICE_NAME_SMARTCLAW%
echo ✅ 服务安装完成!
) else (
echo 跳过服务安装,您需要手动启动应用程序
)
REM 配置防火墙(可选)
choice /C YN /M "是否配置 Windows 防火墙"
if %errorlevel%==1 (
echo 🔥 配置防火墙...
netsh advfirewall firewall add rule name="Claw Gateway" dir=in action=allow protocol=TCP localport=3000
netsh advfirewall firewall add rule name="Claw SmartClaw" dir=in action=allow protocol=TCP localport=3001
netsh advfirewall firewall add rule name="Claw Web" dir=in action=allow protocol=TCP localport=80
echo ✅ 防火墙配置完成!
)
REM 创建启动脚本
echo 📝 创建启动脚本...
echo @echo off > "%DEPLOY_DIR%\start.bat"
echo echo 启动 Claw 服务... >> "%DEPLOY_DIR%\start.bat"
echo echo 🚀 启动网关服务... >> "%DEPLOY_DIR%\start.bat"
echo start "" "%DEPLOY_DIR%\gateway\gateway.exe" >> "%DEPLOY_DIR%\start.bat"
echo timeout /t 3 /nobreak ^>nul >> "%DEPLOY_DIR%\start.bat"
echo echo 🚀 启动 SmartClaw 服务... >> "%DEPLOY_DIR%\start.bat"
echo start "" "%DEPLOY_DIR%\smartclaw\smartclaw.exe" >> "%DEPLOY_DIR%\start.bat"
echo echo ✅ 服务已启动! >> "%DEPLOY_DIR%\start.bat"
echo echo 📡 WebSocket 连接将自动建立 >> "%DEPLOY_DIR%\start.bat"
echo pause >> "%DEPLOY_DIR%\start.bat"
echo @echo off > "%DEPLOY_DIR%\stop.bat"
echo echo 停止 Claw 服务... >> "%DEPLOY_DIR%\stop.bat"
echo taskkill /F /IM gateway.exe >> "%DEPLOY_DIR%\stop.bat"
echo taskkill /F /IM smartclaw.exe >> "%DEPLOY_DIR%\stop.bat"
echo echo 服务已停止! >> "%DEPLOY_DIR%\stop.bat"
echo pause >> "%DEPLOY_DIR%\stop.bat"
echo ✅ 部署完成!
echo 📍 部署信息:
echo 安装目录: %DEPLOY_DIR%
echo 网关服务: %DEPLOY_DIR%\gateway\gateway.exe
echo SmartClaw 服务: %DEPLOY_DIR%\smartclaw\smartclaw.exe
echo Web 前端: %DEPLOY_DIR%\web\
echo 日志目录: %DEPLOY_DIR%\logs\
echo 启动脚本: %DEPLOY_DIR%\start.bat
echo 停止脚本: %DEPLOY_DIR%\stop.bat
echo 📡 WebSocket 配置: 已启用长连接模式
echo 📅 完成时间: %date% %time%
echo.
echo 🎉 Claw 项目部署成功!
echo 请检查服务状态,确保一切正常运行
echo 如有问题,请查看日志文件或联系技术支持
pause