8 Replies Latest reply on Oct 9, 2018 8:33 PM by haiweiz

    VIX for VMware Workstation 15

    Sloth77 Novice

      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?

        • 1. Re: VIX for VMware Workstation 15
          iRunner2016 Novice
          VMware Employees

          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.

          • 2. Re: VIX for VMware Workstation 15
            XS Enthusiast
            VMware Employees

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

            • 3. Re: VIX for VMware Workstation 15
              Sloth77 Novice

              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?

              • 4. Re: VIX for VMware Workstation 15
                iRunner2016 Novice
                VMware Employees

                It's correct.

                 

                VIX on WS14 and WS15 are same.

                • 5. Re: VIX for VMware Workstation 15
                  Sloth77 Novice

                  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.

                  • 6. Re: VIX for VMware Workstation 15
                    haiweiz Enthusiast
                    VMware Employees

                    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.

                    • 7. Re: VIX for VMware Workstation 15
                      Sloth77 Novice

                      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.

                      • 8. Re: VIX for VMware Workstation 15
                        haiweiz Enthusiast
                        VMware Employees

                        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.