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
parent
c28cd29fe7
commit
253d97c93d
|
@ -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{})
|
||||
}()
|
||||
|
|
Loading…
Reference in New Issue