yj
2025-07-23 1225b6cbf0a028b765a0ab6d784bcb80459a67bb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
@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