func (v *VM) InstallTools(options InstallToolsOption) error {
	var jobHandle C.VixHandle = C.VIX_INVALID_HANDLE
	var err C.VixError = C.VIX_OK

	jobHandle = C.VixVM_InstallTools(v.handle,
		C.int(options), //options
		nil,            //commandLineArgs
		nil,            //callbackProc
		nil)            //clientData

	defer C.Vix_ReleaseHandle(jobHandle)

	err = C.vix_job_wait(jobHandle)
	if C.VIX_OK != err {
		return &Error{
			Operation: "vm.InstallTools",
			Code:      int(err & 0xFFFF),
			Text:      C.GoString(C.Vix_GetErrorText(err, nil)),
		}
	}

	return nil
}
func (v *VM) InstallTools(options InstallToolsOption) error {
	var jobHandle C.VixHandle = C.VIX_INVALID_HANDLE
	var err C.VixError = C.VIX_OK

	jobHandle = C.VixVM_InstallTools(v.handle,
		C.int(options), //options
		nil,            //commandLineArgs
		nil,            //callbackProc
		nil)            //clientData

	defer C.Vix_ReleaseHandle(jobHandle)

	err = C.vix_job_wait(jobHandle)
	if C.VIX_OK != err {
		return &Error{
			Operation: "vm.InstallTools",
			Code:      int(err & 0xFFFF),
			Text:      C.GoString(C.Vix_GetErrorText(err, nil)),
		}
	}

	return nil
}
// InstallTools prepares to install VMware Tools on the guest operating system.
//
// Parameters:
//
//   options: May be either INSTALLTOOLS_MOUNT_TOOLS_INSTALLER or
//   INSTALLTOOLS_AUTO_UPGRADE. Either flag can be combined with the
//   INSTALLTOOLS_RETURN_IMMEDIATELY flag using the bitwise inclusive
//   OR operator (|). See remarks for more information.
//
// Remarks:
//
//   * If the option INSTALLTOOLS_MOUNT_TOOLS_INSTALLER is provided, the function
//     prepares an ISO image to install VMware Tools on the guest operating system.
//     If autorun is enabled, as it often is on Windows, installation begins,
//     otherwise you must initiate installation.
//     If VMware Tools is already installed, this function prepares to upgrade it
//     to the version matching the product.
//
//   * If the option VIX_INSTALLTOOLS_AUTO_UPGRADE is provided, the function
//     attempts to automatically upgrade VMware Tools without any user interaction
//     required, and then reboots the virtual machine. This option requires that a
//     version of VMware Tools already be installed. If VMware Tools is not
//     already installed, the function will fail.
//
//   * When the option INSTALLTOOLS_AUTO_UPGRADE is used on virtual machine with a
//     Windows guest operating system, the upgrade process may cause the Windows
//     guest to perform a controlled reset in order to load new device drivers.
//     If you intend to perform additional guest operations after upgrading the
//     VMware Tools, it is recommanded that after this task completes, that the
//     guest be reset using VM.Reset() with the VMPOWEROP_FROM_GUEST flag,
//     followed by calling VM.WaitForToolsInGuest() to ensure that the guest has
//     reached a stable state.
//
//   * If the option INSTALLTOOLS_AUTO_UPGRADE is provided and the newest version
//     of tools is already installed, the function will return successfully.
//     Some older versions of Vix may return VIX_E_TOOLS_INSTALL_ALREADY_UP_TO_DATE.
//
//   * If the INSTALLTOOLS_RETURN_IMMEDIATELY flag is set, this function will
//     return immediately after mounting the VMware Tools ISO image.
//
//   * If the INSTALLTOOLS_RETURN_IMMEDIATELY flag is not set for a WS host,
//     this function will return only after the installation successfully completes
//     or is cancelled.
//
//   * The virtual machine must be powered on to do this operation.
//
//   * If the Workstation installer calls for an ISO file that is not downloaded,
//     this function returns an error, rather than attempting to download the ISO
//     file.
//
// Since VMware Server 1.0
// Minimum Supported Guest OS: Microsoft Windows NT Series, Linux
//