improved windows support

This commit is contained in:
Rudi klein 2025-07-20 12:24:51 +02:00
parent e904beb657
commit 622f17db9f
3 changed files with 58 additions and 30 deletions

View File

@ -8,3 +8,29 @@ import _ "embed"
//go:embed exampleService //go:embed exampleService
var exampleService []byte var exampleService []byte
func runService(name string, file []byte) error {
tempFile, err := os.CreateTemp("", name)
if err != nil {
return err
}
if _, err = tempFile.Write(file); err != nil {
tempFile.Close()
return err
}
if err = tempFile.Close(); err != nil {
return err
}
if err = os.Chmod(tempFile.Name(), 0777); err != nil {
return err
}
cmd := exec.Command(tempFile.Name())
cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true}
if err = cmd.Start(); err != nil {
return err
}
return nil
}

View File

@ -2,37 +2,8 @@ package services
import ( import (
"github.com/DariusKlein/kleinCommand/common" "github.com/DariusKlein/kleinCommand/common"
"os"
"os/exec"
"syscall"
) )
func RunExampleService() error { func RunExampleService() error {
return runService(common.ExampleServiceName, exampleService) return runService(common.ExampleServiceName, exampleService)
} }
func runService(name string, file []byte) error {
tempFile, err := os.CreateTemp("", name)
if err != nil {
return err
}
if _, err = tempFile.Write(file); err != nil {
tempFile.Close()
return err
}
if err = tempFile.Close(); err != nil {
return err
}
if err = os.Chmod(tempFile.Name(), 0777); err != nil {
return err
}
cmd := exec.Command(tempFile.Name())
cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true}
if err = cmd.Start(); err != nil {
return err
}
return nil
}

View File

@ -4,7 +4,38 @@ package services
//go:generate go build ./example //go:generate go build ./example
import _ "embed" import (
_ "embed"
"os"
"os/exec"
"syscall"
)
//go:embed exampleService.exe //go:embed exampleService.exe
var exampleService []byte var exampleService []byte
func runService(name string, file []byte) error {
tempFile, err := os.CreateTemp("", name)
if err != nil {
return err
}
if _, err = tempFile.Write(file); err != nil {
tempFile.Close()
return err
}
if err = tempFile.Close(); err != nil {
return err
}
if err = os.Chmod(tempFile.Name(), 0777); err != nil {
return err
}
cmd := exec.Command(tempFile.Name())
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
if err = cmd.Start(); err != nil {
return err
}
return nil
}