diff options
author | Tobias Gruetzmacher <[email protected]> | 2022-10-04 19:04:02 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2022-10-04 11:04:02 -0600 |
commit | 253d97c93dce9a3365e67d0360b2e47dd165578e (patch) | |
tree | c6c8788b91b838451a76efe8c2b0270ff83bccd8 /service_windows.go | |
parent | c28cd29fe7ffc4b7f7bebb16fe721f25abab2446 (diff) | |
download | caddy-253d97c93dce9a3365e67d0360b2e47dd165578e.tar.gz caddy-253d97c93dce9a3365e67d0360b2e47dd165578e.zip |
core: Chdir to executable location on Windows (#5115)
Since all Windows services are run from the Windows system directory,
make it easier for users by switching to our program directory right
after the start.
Diffstat (limited to 'service_windows.go')
-rw-r--r-- | service_windows.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/service_windows.go b/service_windows.go index 6db299256..357c9ac8e 100644 --- a/service_windows.go +++ b/service_windows.go @@ -15,6 +15,9 @@ package caddy import ( + "os" + "path/filepath" + "github.com/caddyserver/caddy/v2/notify" "golang.org/x/sys/windows/svc" ) @@ -24,6 +27,14 @@ func init() { if err != nil || !isService { return } + + // Windows services always start in the system32 directory, try to + // switch into the directory where the caddy executable is. + execPath, err := os.Executable() + if err == nil { + _ = os.Chdir(filepath.Dir(execPath)) + } + go func() { _ = svc.Run("", runner{}) }() |