builder/virtualbox: search VBOX_MSI_INSTALL_PATH [GH-1337]

This commit is contained in:
Mitchell Hashimoto 2014-09-03 21:08:57 -07:00
parent f0bc4fd0b7
commit c0f9dbde41
2 changed files with 23 additions and 9 deletions

View File

@ -33,6 +33,8 @@ BUG FIXES:
* builder/parallels/all: Added some navigation keys [GH-1442] * builder/parallels/all: Added some navigation keys [GH-1442]
* builder/qemu: If headless, sdl display won't be used. [GH-1395] * builder/qemu: If headless, sdl display won't be used. [GH-1395]
* builder/qemu: Use `512M` as `-m` default. [GH-1444] * builder/qemu: Use `512M` as `-m` default. [GH-1444]
* builder/virtualbox/all: Search `VBOX_MSI_INSTALL_PATH` for path to
`VBoxManage` on Windows. [GH-1337]
* builder/virtualbox/all: Seed RNG to avoid same ports. [GH-1386] * builder/virtualbox/all: Seed RNG to avoid same ports. [GH-1386]
* builder/virtualbox/all: Better error if guest additions URL couldn't be * builder/virtualbox/all: Better error if guest additions URL couldn't be
detected. [GH-1439] detected. [GH-1439]

View File

@ -55,15 +55,16 @@ func NewDriver() (Driver, error) {
// On Windows, we check VBOX_INSTALL_PATH env var for the path // On Windows, we check VBOX_INSTALL_PATH env var for the path
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
if installPath := os.Getenv("VBOX_INSTALL_PATH"); installPath != "" { vars := []string{"VBOX_INSTALL_PATH", "VBOX_MSI_INSTALL_PATH"}
log.Printf("[DEBUG] builder/virtualbox: VBOX_INSTALL_PATH: %s", for _, key := range vars {
installPath) value := os.Getenv(key)
for _, path := range strings.Split(installPath, ";") { if value != "" {
path = filepath.Join(path, "VBoxManage.exe") log.Printf(
if _, err := os.Stat(path); err == nil { "[DEBUG] builder/virtualbox: %s = %s", key, value)
vboxmanagePath = path vboxmanagePath = findVBoxManageWindows(value)
break
} }
if vboxmanagePath != "" {
break
} }
} }
} }
@ -84,3 +85,14 @@ func NewDriver() (Driver, error) {
return driver, nil return driver, nil
} }
func findVBoxManageWindows(paths string) string {
for _, path := range strings.Split(paths, ";") {
path = filepath.Join(path, "VBoxManage.exe")
if _, err := os.Stat(path); err == nil {
return path
}
}
return ""
}