149 lines
5.6 KiB
Batchfile
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
|