From 5de78467a0afd48485f79ec04fcd209eb653235f Mon Sep 17 00:00:00 2001 From: Damjan Cvetko Date: Tue, 22 Oct 2019 00:08:57 +0200 Subject: [PATCH] Find krd.exe relative to current exe. --- kr/kr_windows.go | 6 +++++- socket_windows.go | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/kr/kr_windows.go b/kr/kr_windows.go index ec40c6e3..b17ea075 100644 --- a/kr/kr_windows.go +++ b/kr/kr_windows.go @@ -54,7 +54,11 @@ func uninstallCommand(c *cli.Context) (err error) { } func startKrd() (err error) { - cmd := exec.Command("cmd.exe", "/C", "start", "/b", `krd.exe`) + exe := "krd.exe" + if pfx, err := getPrefix(); err == nil { + exe = pfx + `\krd.exe` + } + cmd := exec.Command("cmd.exe", "/C", "start", "/b", exe) return cmd.Run() } diff --git a/socket_windows.go b/socket_windows.go index ec6fe64a..938d6dd2 100644 --- a/socket_windows.go +++ b/socket_windows.go @@ -9,6 +9,7 @@ import ( "net" "os" "os/exec" + "path/filepath" "time" ) @@ -19,10 +20,23 @@ func AgentListen() (listener net.Listener, err error) { return } +// TODO too much repeating... +func getPrefix() (string, error) { + if ex, err := os.Executable(); err == nil { + return filepath.Dir(ex), nil + } else { + return "", err + } +} + func DaemonDial(unixFile string) (conn net.Conn, err error) { if !IsKrdRunning() { os.Stderr.WriteString(Yellow("Krypton ▶ Restarting krd...\r\n")) - _ = exec.Command("cmd.exe", "/C", "start", "/b", `krd.exe`).Start() + exe := "krd.exe" + if pfx, err := getPrefix(); err == nil { + exe = pfx + `\krd.exe` + } + _ = exec.Command("cmd.exe", "/C", "start", "/b", exe).Start() <-time.After(1 * time.Second) } conn, err = net.Dial("unix", unixFile)