将代码与测试注释改为中文以符合仓库规范;新增中文部署指南、 示例配置,并完善构建脚本对 VERSION 注入的说明。 Co-authored-by: Cursor <cursoragent@cursor.com>
44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
//go:build windows
|
||
|
||
package service
|
||
|
||
import (
|
||
"os/exec"
|
||
"strings"
|
||
|
||
"mfd-monitor-agent/internal/config"
|
||
)
|
||
|
||
// windowsManager 通过 Windows 服务控制管理器(SCM)管理 agent。
|
||
type windowsManager struct{}
|
||
|
||
// newManager 返回 Windows 服务管理器。
|
||
func newManager() Manager {
|
||
return windowsManager{}
|
||
}
|
||
|
||
// Install 将 agent 可执行文件注册为自动启动的 Windows 服务。
|
||
func (windowsManager) Install(executable string, cfg config.Config, opts InstallOptions) error {
|
||
args := []string{`"` + executable + `"`, "run"}
|
||
if opts.ConfigPath != "" {
|
||
args = append(args, "-config", `"`+opts.ConfigPath+`"`)
|
||
}
|
||
return exec.Command("sc.exe", "create", cfg.Service.Name, "binPath=", strings.Join(args, " "), "DisplayName=", cfg.Service.DisplayName, "start=", "auto").Run()
|
||
}
|
||
|
||
// Uninstall 停止并删除已配置的 Windows 服务。
|
||
func (windowsManager) Uninstall(cfg config.Config) error {
|
||
_ = exec.Command("sc.exe", "stop", cfg.Service.Name).Run()
|
||
return exec.Command("sc.exe", "delete", cfg.Service.Name).Run()
|
||
}
|
||
|
||
// Start 请求 SCM 启动服务。
|
||
func (windowsManager) Start(cfg config.Config) error {
|
||
return exec.Command("sc.exe", "start", cfg.Service.Name).Run()
|
||
}
|
||
|
||
// Stop 请求 SCM 停止服务。
|
||
func (windowsManager) Stop(cfg config.Config) error {
|
||
return exec.Command("sc.exe", "stop", cfg.Service.Name).Run()
|
||
}
|