github.com/mitchellh/packer@v1.3.2/builder/vmware/common/driver_workstation10_windows.go (about)

     1  // +build windows
     2  
     3  package common
     4  
     5  import (
     6  	"fmt"
     7  	"log"
     8  	"regexp"
     9  	"syscall"
    10  )
    11  
    12  func workstationVerifyVersion(version string) error {
    13  	key := `SOFTWARE\Wow6432Node\VMware, Inc.\VMware Workstation`
    14  	subkey := "ProductVersion"
    15  	productVersion, err := readRegString(syscall.HKEY_LOCAL_MACHINE, key, subkey)
    16  	if err != nil {
    17  		log.Printf(`Unable to read registry key %s\%s`, key, subkey)
    18  		key = `SOFTWARE\VMware, Inc.\VMware Workstation`
    19  		productVersion, err = readRegString(syscall.HKEY_LOCAL_MACHINE, key, subkey)
    20  		if err != nil {
    21  			log.Printf(`Unable to read registry key %s\%s`, key, subkey)
    22  			return err
    23  		}
    24  	}
    25  
    26  	versionRe := regexp.MustCompile(`^(\d+)\.`)
    27  	matches := versionRe.FindStringSubmatch(productVersion)
    28  	if matches == nil {
    29  		return fmt.Errorf(
    30  			`Could not find a VMware WS version in registry key %s\%s: '%s'`, key, subkey, productVersion)
    31  	}
    32  	log.Printf("Detected VMware WS version: %s", matches[1])
    33  
    34  	return compareVersions(matches[1], version, "Workstation")
    35  }