/go-service-framework

基于Go语言的服务框架

Primary LanguageGo

go get github.com/kardianos/service

go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build-trimpath -ldflags "-linkmode internal" -o AAServiceApp.exe main.go

go get -u github.com/xxl6097/go-glog@v0.0.19

go get -u github.com/xxl6097/go-service@v0.0.58

go get -u github.com/xxl6097/go-sqlite@v0.0.6

go get -u github.com/xxl6097/go-http@v0.0.14

goversioninfo -manifest versioninfo.json

http://uuxia.cn:8086/files/soft/json/appstore.json


package main

import (
	"fmt"
	"os"
)

func main() {
	os.Chdir("/Users/uuxia/Library/Caches/JetBrains/GoLand2024.1/tmp/GoLand/frpc/")
	executable := "/Users/uuxia/Library/Caches/JetBrains/GoLand2024.1/tmp/GoLand/frpc/frpc" // 可执行文件的路径
	args := []string{executable, "-c", "frpc.toml"}                                         // 启动参数列表

	attr := &os.ProcAttr{
		Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
		//Sys: &syscall.SysProcAttr{
		//	Chroot: "/Users/uuxia/Library/Caches/JetBrains/GoLand2024.1/tmp/GoLand/frpc/",
		//},
	}

	p, err := os.StartProcess(executable, args, attr)
	if err != nil {
		fmt.Printf("Error: %s", err.Error())
		return
	}
	p.Wait()

	fmt.Println("Process started successfully.")
}

windows打包

1、 main.go 文件中添加标签,如下

//go:generate goversioninfo -icon=resource/icon.ico -manifest=resource/goversioninfo.exe.manifest
func main() {
}

2、编译打包

go generate
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags "-linkmode internal $ldflags" -o ${appname}_${version}_windows_amd64.exe

3、生成版本信息 resource文件夹