diff --git a/drivers/vmwarefusion/vmrun_darwin.go b/drivers/vmwarefusion/vmrun_darwin.go index 917c1347fd..415160c6e0 100644 --- a/drivers/vmwarefusion/vmrun_darwin.go +++ b/drivers/vmwarefusion/vmrun_darwin.go @@ -8,16 +8,16 @@ import ( "bytes" "errors" "fmt" + "github.com/docker/machine/log" "os" "os/exec" + "path/filepath" "strings" - - "github.com/docker/machine/log" ) var ( - vmrunbin = "/Applications/VMware Fusion.app/Contents/Library/vmrun" - vdiskmanbin = "/Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager" + vmrunbin = setVmwareCmd("vmrun") + vdiskmanbin = setVmwareCmd("vmware-vdiskmanager") ) var ( @@ -26,6 +26,14 @@ var ( ErrVMRUNNotFound = errors.New("VMRUN not found") ) +// detect the vmrun and vmware-vdiskmanager cmds' path if needed +func setVmwareCmd(cmd string) string { + if path, err := exec.LookPath(cmd); err == nil { + return path + } + return filepath.Join("/Applications/VMware Fusion.app/Contents/Library/", cmd) +} + func vmrun(args ...string) (string, string, error) { cmd := exec.Command(vmrunbin, args...) if os.Getenv("DEBUG") != "" {