# Installation on Windows ™

## Using OSGeo4W

### Install OSGeo4W

First download the OSGeo4W installer from http://trac.osgeo.org/osgeo4w/, and install it with all the dependencies needed by your WPS services such as GDAL for example.

Warning

FastCGI, libxml, Python and cURL are mandatory

### Install ZOO4W

Once OSGeo4W installed on your platform, you will need more GNU tools and libraries. This package contains full dependencies required to compile on a WIN32 platform and this one contains full runtime dependencies . Place it to your `C:\OSGeo4W\bin`.

Download the binary version of ZOO Kernel for WIN32, then place it in the `C:\OSGeo4W\bin` directory. Don’t forget to place the main.cfg file in the same directory, you can use a modified copy of this file.

Additionaly, the binary version of the OGR Services Provider available from here can be used directly. Place the two libraries with their respective .zcfg files in your local `C:\OSGeo4W\bin` directory to do so.

## Compile ZOO from source

Warning

Ensure to first perform the prerequisite steps before compiling the ZOO Kernel.

The following steps are for use with the Microsoft Visual Studio compiler (and tested with MSVC 2008).

1. Make sure the gnuwin32 tools bison.exe and flex.exe are found in your path. You can download the GNUwin32 tools here.

2. Modify the nmake.opt file to point to your local libraries. You can find a modified nmake.opt that points to local libs here. You can also find a modified `zoo-project\zoo-kernel\makefile.vc` file here.

3. Execute:

       nmake /f makefile.vc

4. A file zoo_loader.cgi should be created. Note that if another file named zoo_loader.cgi.manifest is also created, you will have to run another command:

       nmake /f makefile.vc embed-manifest

5. Copy the files zoo_loader.cgi and main.cfg into your cgi-bin directory.

6. Using the command prompt, test the zoo-kernel by executing the following command:

       D:\ms4w\Apache\cgi-bin> zoo_loader.cgi

   which should display a message such as:

       Content-Type: text/xml; charset=utf-8
       Status: 200 OK

       <?xml version="1.0" encoding="utf-8"?>
       <ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd" xml:lang="en-US" version="1.1.0">
         <ows:Exception exceptionCode="MissingParameterValue">
           <ows:ExceptionText>Parameter &lt;request&gt; was not specified</ows:ExceptionText>
         </ows:Exception>
       </ows:ExceptionReport>

7. Edit the main.cfg file so that it contains values describing your WPS service. An example of such a file running on Windows is:

       [main]
       encoding = utf-8
       version = 1.0.0
       serverAddress = http://localhost/
       lang = en-CA
       tmpPath=/ms4w/tmp/ms_tmp/
       tmpUrl = /ms_tmp/

       [identification]
       title = The Zoo WPS Development Server
       abstract = Development version of ZooWPS. See http://www.zoo-project.org
       fees = None
       accessConstraints = none
       keywords = WPS,GIS,buffer

       [provider]
       providerName=Gateway Geomatics
       providerSite=http://www.gatewaygeomatics.com
       individualName=Jeff McKenna
       positionName=Director
       role=Dev
       adressDeliveryPoint=1101 Blue Rocks Road
       addressCity=Lunenburg
       addressAdministrativeArea=False
       addressPostalCode=B0J 2C0
       addressCountry=ca
       addressElectronicMailAddress=info@gatewaygeomatics.com
       phoneVoice=False
       phoneFacsimile=False

8. Open a web browser window, and execute a GetCapababilites request on your WPS service: http://localhost/cgi-bin/zoo_loader.cgi?request=GetCapabilities&service=WPS

   The response should be displayed in your browser, such as:

       <wps:Capabilities xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsGetCapabilities_response.xsd" service="WPS" xml:lang="en-US" version="1.0.0">
       <ows:ServiceIdentification>
         <ows:Title>The Zoo WPS Development Server</ows:Title>
         <ows:Abstract>
           Development version of ZooWPS. See http://www.zoo-project.org
         </ows:Abstract>
         <ows:Keywords>
           <ows:Keyword>WPS</ows:Keyword>
           <ows:Keyword>GIS</ows:Keyword>
           <ows:Keyword>buffer</ows:Keyword>
         </ows:Keywords>
         <ows:ServiceType>WPS</ows:ServiceType>
         <ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
         ...

### Optionally Compile Individual Services

An example could be the OGR base-vect-ops provider located in the `zoo-project\zoo-services\ogr\base-vect-ops` directory.

1. First edit the makefile.vc located in that directory, and execute:

       nmake /f makefile.vc

   Inside that same directory, the ogr_service.zo file should be created.

2. Copy all the files inside `zoo-services\ogr\base-vect-ops\cgi-env` into your `cgi-bin` directory

3. Test this service provider through the following URL:

http://localhost/cgi-bin/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&Identifier=Buffer&DataInputs=BufferDistance=1@datatype=interger;InputPolygon=Reference@xlink:href=http%3A%2F%2Fwww.zoo-project.org%3A8082%2Fgeoserver%2Fows%3FSERVICE%3DWFS%26REQUEST%3DGetFeature%26VERSION%3D1.0.0%26typename%3Dtopp%3Astates%26SRS%3DEPSG%3A4326%26FeatureID%3Dstates.15

> The response displayed in your browser should contain:

>     <wps:ProcessSucceeded>Service "Buffer" run successfully.</wps:ProcessSucceeded>