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.
pull/5108/head
Tobias Gruetzmacher 2022-10-04 19:04:02 +02:00 committed by GitHub
parent c28cd29fe7
commit 253d97c93d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 0 deletions

View File

@ -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{})
}()