# Windows support

- Experimental installation package
  - Caveats
  - Existing problems with this installer we know about
- Connection types
- Connecting to VMware ESX/vSphere
- TLS Certificates
- Feedback
- Compiling yourself
  - MSYS Build script
  - Cross compiling
  - By hand

Libvirt is known to work as a client (not server) on Windows XP (32-bit), and Windows 7 (64-bit). Other Windows variants likely work as well but we either haven't tested or received reports for them.

## Experimental installation package

A windows installation package is in development. An experimental version is available here:

http://libvirt.org/sources/win32_experimental/Libvirt-0.8.8-0.exe

It is not production ready.

This version includes the libvirt development headers and libraries for compiling against, the virsh shell with its needed dependencies, and untested Python bindings.

### Caveats

- This installer just repackages the files compiled using Matthias Bolte's msys_setup scripting (described below).
- This is a .exe installer, created using NSIS. We're looking into something to create .msi installers as well.
- The script for the NSIS installer is available online here.

### Existing problems with this installer we know about

These are problems we know about, and need to be fixed in subsequent versions of the installer (assistance welcomed):

- New versions install over other libvirt versions
  If a version of this installer has installed libvirt on the system already, this installer will automatically suggest the same installation location, then overwrite the version already there without checking.
  This is fairly non-optimal, and should be fixed. What should probably happen, is for this installer to detect an existing installation then offer to either uninstall it first or ask for a new installation location.

## Connection types

These connection types are known to work:

- QEMU with TLS (qemu+tls://)
- QEMU with direct TCP (qemu+tcp://)
- VMware ESX (esx://)
- VMware VPX (vpx://)

These connection types are known not to work:

- QEMU with SSH (qemu+ssh://)

All other connection types may or may not work, and haven't been tested.

Please let us know either the results (either way) if you do.

Special note - Support for VirtualBox *on windows* was added in libvirt 0.8.7, so reports on success and failure if you're using that would be really helpful and appreciated.

WARNING - The qemu+tcp:// connection type passes all traffic without encryption. This is a security hazard, and should not be used in security sensitive environments.

## Connecting to VMware ESX/vSphere

Details on the capabilities, certificates, and connection string syntax used for connecting to VMware ESX and vSphere can be found online here:

http://libvirt.org/drvesx.html

## TLS Certificates

TLS certificates need to have been created and placed in the correct locations, before you will be able to connect to QEMU servers over TLS.

Information on generating TLS certificates can be found here:

http://wiki.libvirt.org/page/TLSSetup

These instructions are for *nix, and have not yet been adapted for Windows. You'll need to figure out the Windows equivalents until that's done (sorry). If you can help us out with this, that would be really welcome.

The locations of the TLS certificates and key file on Windows are hard coded, rather than being configurable.

The Certificate Authority (CA) certificate file must be placed in:

- %APPDATA%\libvirt\pki\CA\cacert.pem

The Client certificate file must be placed in:

- %APPDATA%\libvirt\pki\libvirt\clientcert.pem

The Client key file must be placed in:

- %APPDATA%\libvirt\pki\libvirt\private\clientkey.pem

On an example Windows 7 x64 system here, this resolves to these paths:

- C:\Users\someuser\AppData\Roaming\libvirt\pki\CA\cacert.pem
- C:\Users\someuser\AppData\Roaming\libvirt\pki\libvirt\clientcert.pem
- C:\Users\someuser\AppData\Roaming\libvirt\pki\libvirt\private\clientkey.pem

## Feedback

Feedback and suggestions on changes to make and what else to include are desired.

## Compiling yourself

Libvirt can be compiled on Windows using the free MinGW compiler.

### MSYS Build script

The easiest way is to use the msys_setup script, developed by Matthias Bolte. This is actively developed and kept current with libvirt releases:

https://github.com/photron/msys_setup

### Cross compiling

You can also cross-compile to a Windows target from a Fedora machine using the packages available from the Fedora MinGW project (which includes a working libvirt specfile).

### By hand

Use these options when following the instructions on the Compiling page.

    ./configure \
      --without-sasl \
      --without-avahi \
      --without-polkit \
      --without-python \
      --without-xen \
      --without-qemu \
      --without-lxc \
      --without-openvz \
      --without-libvirtd