@echo off chcp 65001 >nul echo ======================================== echo E云管家-DifyAI对接服务 Windows服务安装脚本 echo ======================================== echo. :: 检查管理员权限 net session >nul 2>&1 if %errorLevel% == 0 ( echo 检测到管理员权限,继续安装... ) else ( echo 错误:需要管理员权限才能安装Windows服务 echo 请右键点击此脚本,选择"以管理员身份运行" pause exit /b 1 ) :: 获取当前目录 set "CURRENT_DIR=%~dp0" set "SERVICE_NAME=ECloudDifyService" set "SERVICE_DISPLAY_NAME=E云管家-DifyAI对接服务" set "SERVICE_DESCRIPTION=将E云管家消息转发到DifyAI并返回AI回答的服务" set "EXE_PATH=%CURRENT_DIR%ecloud_dify.exe" echo 当前目录: %CURRENT_DIR% echo 服务名称: %SERVICE_NAME% echo 可执行文件: %EXE_PATH% echo. :: 检查exe文件是否存在 if not exist "%EXE_PATH%" ( echo 错误:找不到可执行文件 %EXE_PATH% echo 请确保已经完成项目打包,并且ecloud_dify.exe文件存在 pause exit /b 1 ) :: 停止并删除已存在的服务 echo 检查是否存在同名服务... sc query "%SERVICE_NAME%" >nul 2>&1 if %errorLevel% == 0 ( echo 发现已存在的服务,正在停止并删除... sc stop "%SERVICE_NAME%" >nul 2>&1 timeout /t 3 /nobreak >nul sc delete "%SERVICE_NAME%" >nul 2>&1 if %errorLevel% == 0 ( echo 已删除旧服务 ) else ( echo 警告:删除旧服务失败,继续安装新服务 ) echo. ) :: 创建Windows服务 echo 正在创建Windows服务... sc create "%SERVICE_NAME%" binPath= "\"%EXE_PATH%\"" DisplayName= "%SERVICE_DISPLAY_NAME%" start= auto if %errorLevel% == 0 ( echo 服务创建成功 ) else ( echo 错误:服务创建失败 pause exit /b 1 ) :: 设置服务描述 sc description "%SERVICE_NAME%" "%SERVICE_DESCRIPTION%" :: 设置服务恢复选项(失败时自动重启) sc failure "%SERVICE_NAME%" reset= 86400 actions= restart/5000/restart/10000/restart/30000 echo. echo 服务安装完成! echo. echo 可用的操作: echo 1. 启动服务: sc start %SERVICE_NAME% echo 2. 停止服务: sc stop %SERVICE_NAME% echo 3. 查看服务状态: sc query %SERVICE_NAME% echo 4. 删除服务: sc delete %SERVICE_NAME% echo. echo 或者使用Windows服务管理器 (services.msc) 进行管理 echo. :: 询问是否立即启动服务 set /p START_NOW="是否立即启动服务?(Y/N): " if /i "%START_NOW%"=="Y" ( echo 正在启动服务... sc start "%SERVICE_NAME%" if %errorLevel% == 0 ( echo 服务启动成功! echo 服务将在端口 7979 上运行 echo 可以通过 http://localhost:7979 访问服务 ) else ( echo 服务启动失败,请检查配置文件和日志 ) ) else ( echo 服务已安装但未启动 echo 可以稍后通过 sc start %SERVICE_NAME% 启动服务 ) echo. pause