注册为window 的服务

最后更新于:2022-04-02 02:36:50

[TOC] ## 使用go 注册 ``` package main import ( _ "antbiz/routers" "log" _ "antbiz/lib" "os" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" "github.com/kardianos/service" ) type program struct{} func (p *program) Start(s service.Service) error { log.Println("开始服务") go p.run() return nil } func (p *program) Stop(s service.Service) error { log.Println("停止服务") return nil } func (p *program) run() { // 这里放置程序要执行的代码…… //是否开启debug orm.Debug = false beego.Run() } func main() { //服务的配置信息 cfg := &service.Config{ Name: "UpAntBiz", DisplayName: "UpAntBiz", Description: "UpAntBiz", } // Interface 接口 prg := &program{} // 构建服务对象 s, err := service.New(prg, cfg) if err != nil { log.Fatal(err) } // logger 用于记录系统日志 logger, err := s.Logger(nil) if err != nil { log.Fatal(err) } if len(os.Args) == 2 { //如果有命令则执行 err = service.Control(s, os.Args[1]) if err != nil { log.Fatal(err) } } else { //否则说明是方法启动了 err = s.Run() if err != nil { logger.Error(err) } } if err != nil { logger.Error(err) } } ``` 运行 ``` > go build main.go > main.exe [install| stop | start] ``` ## 使用命令注册 ### 添加服务 ``` 描述: 在注册表和服务数据库中创建服务项。 用法: sc create [service name] [binPath= ] ... 选项: 注意: 选项名称包括等号。 等号和值之间需要一个空格。 type= (默认 = own) start= (默认 = demand) error= (默认 = normal) binPath= <.exe 文件的 BinaryPathName> group= tag= depend= <依存关系(以 / (斜杠)分隔)> obj= (默认= LocalSystem) DisplayName= <显示名称> password= <密码> ``` eg: ``` sc create go_server binPath= "D:\go\api\src\demo\demo.exe” type= share start= auto ``` ### 删除服务 第三参数为服务名, 通过`服务->属性->服务名称` 并非显示名称 `sc delete godemo.exe` ### widow 编译为不显示 dos 界面 `go build -ldflags "-H windowsgui" ` ### nssm 安装go 编译的 exe [下载](https://nssm.cc/download) `nssm install`
';