VMware Communities
Sloth77
Enthusiast
Enthusiast

VIX for VMware Workstation 15

I notice that the VMware Workstation 15 does not have an associated VIX download and that there is mention of a new REST API.

Does that mean that VIX has been dropped?

If not, where can I obtain it?

Reply
0 Kudos
8 Replies
iRunner2016
Enthusiast
Enthusiast

VIX isn't provided as a standalone product now, but it is still shipped with Workstation. You can install Workstation 15 to obtain VIX 1.17.

Reply
0 Kudos
xishengzhang
VMware Employee
VMware Employee

As iRunner2016 mentioned, you can find the vix related library from workstation installation directory, including libxml2.dll, vix.dll and zlib1.dll. 

Reply
0 Kudos
Sloth77
Enthusiast
Enthusiast

Thanks for the clarification.

I notice that the version is still 1.17, which is the same as for Workstation 14.  Is this correct or should it be version 1.18?

Reply
0 Kudos
iRunner2016
Enthusiast
Enthusiast

It's correct.

VIX on WS14 and WS15 are same.

Reply
0 Kudos
Sloth77
Enthusiast
Enthusiast

OK, I've taken a further look into this and I still don't think the correct VIX is distributed.

My application builds happily against vix.lib in the "VMware VIX" directory of the VMware Workstation 15 installation, but when I attempt to power on the VM (using VIX API), I get "unknown error".  However, the 32-bit "vmrun.exe" (in the "VMware Workstation" directory) powers it on correctly.

If I look at the files in the 32-bit "VMware VIX" directory (which I build/run my app against and doesn't work), I get:

19/09/2018  04:02           924,672 iconv.dll

19/09/2018  04:02         1,322,496 libeay32.dll

19/09/2018  04:02         2,019,328 libxml2.dll

19/09/2018  04:02           289,792 ssleay32.dll

19/09/2018  04:03         5,329,408 vix.dll

19/09/2018  04:03            63,628 vix.lib

19/09/2018  04:03         5,329,408 vixd.dll

19/09/2018  04:03            63,628 vixd.lib

19/09/2018  04:02            75,776 zlib1.dll

If I look at the corresponding matching files in the "VMware Workstation" directory (which I run vmrun.exe from and does work), I get:

19/09/2018  04:18           940,464 iconv.dll

19/09/2018  04:18         1,338,288 libeay32.dll

19/09/2018  04:18         2,035,120 libxml2.dll

19/09/2018  04:18           305,584 ssleay32.dll

19/09/2018  04:18         5,345,200 vix.dll

19/09/2018  04:12            91,568 zlib1.dll

It is clear that the version of VIX (and associated libraries) used by "vmrun" in the "Workstation" directory (which works) is different from the version in the "VMware VIX" directory that we are expected to build and run using.

Unfortunately, the working version in "Workstation" directory does not contain the import library to link against (vix.lib) and attempting to run my application using the DLLs in the "Workstation" directory doesn't work.

Any advice here would be appreciated.  I don't want to have to resort to invoking "vmrun.exe" rather than using the VIX API directory.

Reply
0 Kudos
haiweiz
VMware Employee
VMware Employee

Hello, Sloth77:

The only difference between the WS\vix.dll and VIX\vix.dll is, in WS directory, the vix.dll is signed by VMware, the VIX directory is not.

Could you please try to run the powerOn.c samples in VMware VIX\samples?

Notes, you need comment out the line 149 to 157 in powerOn.c, that is going to poweroff the VM.

If you got the same result, please collect the support data for us, so we can diagnostic the issue.

Thanks your support.

Reply
0 Kudos
Sloth77
Enthusiast
Enthusiast

Thanks for the reply.

I have tried compiling the samples as you suggested, but unfortunately I am unable to get them to compile on any of the Visual Studio versions I have (2010, 2012, 2017).  I've attached a screenshot showing the errors I get.

Also, it appears the samples use the VIX wrapper library, which I don't use for the application I mentioned in my original message.  My application links directly against the vix.lib library.

Reply
0 Kudos
haiweiz
VMware Employee
VMware Employee

Hello, Sloth77:

The error happen when the linker try to find VC CRT internal function vacopy, it may caused by your dev environment.

I just tried to use the vix.lib directly, it works, to do that, I changed the nMakefile64bit as following:

# To compile sample programs on Windows, type:  nmake /f nMakefile

# For debugging, change LIBS = $(RELEASE) to $(DEBUG)

#  and possibly put #pragma warning(disable:4099) into sample code.

#

VIXH = /I "C:\\Program Files (x86)\\VMware\\VMware VIX\\"

VIXLIB = "C:\Program Files (x86)\VMware\VMware VIX\Workstation-15.0.0\64bit\vix.lib"

LIBRARIES = kernel32.lib user32.lib advapi32.lib ole32.lib oleaut32.lib ws2_32.lib shell32.lib

WRAPPER = $(VIXLIB) $(LIBRARIES)

DBGWRAP = "C:\\Program Files (x86)\\VMware\\VMware VIX\\vix64AllProductsd.lib" $(LIBRARIES)

RELEASE = /MT $(WRAPPER) /link /INCREMENTAL:no # /NODEFAULTLIB:libcmt.lib

DEBUG = /DDEBUG /MTd $(DBGWRAP) /Zi /link /DEBUG /INCREMENTAL:no /NODEFAULTLIB:libcmtd.lib

LIBS = $(RELEASE)

all: powerOn

callbackProc: callbackProc.c

cl callbackProc.c $(VIXH) $(LIBS)

fhostopen: fhostopen.c

cl fhostopen.c $(VIXH) $(LIBS)

guestOps: guestOps.c

cl guestOps.c $(VIXH) $(LIBS)

powerOn: powerOn.c

cl powerOn.c $(VIXH) $(LIBS)

snapshot: snapshot.c

cl snapshot.c $(VIXH) $(LIBS)

suspend: suspend.c

cl suspend.c $(VIXH) $(LIBS)

clean:

erase /f *.exe *.exe.manifest *.obj *.pdb

And compile success. copy the compiled powerOn.exe to "C:\Program Files (x86)\VMware\VMware VIX\Workstation-15.0.0\64bit\", the function worked.

Reply
0 Kudos