Chapter 1 WPKG Install

Find this post interesting? Do you like interesting things? Maybe you would like my invention, a connectible candle called a WickBrick!

Get one here


Network Cookbook for Small and Medium Enterprises.

Lowering costs by making technology easier to maintain.


One of the fundamental aspects of network maintenance is deploying software. It is very possible to hand install software on every single computer… of course an automated way is always preferred.

That is what leads us to WPKG. WPKG is a very simple, easy to use automated software deployment, upgrade, and removal program for Windows.


Server Install

Download the latest stable release from here
(Not the client)
Something like WPKG 1.0.2 – zip archive

Now unzip the files someplace.

Now on the server that you want to install WPKG on, create a shared folder named WPKG.

Copy into the share (from where you unzipped them) four files:

wpkg.js (“WPKG engine”)hosts.xml (host names, which will use WPKG)

profiles.xml (profiles available to hosts) and

packages.xml (applications and scripts that can be deployed or executed on workstations)

Let’s edit the hosts.xml (on the server of course) to add one computer for testing. Between the <wpkg> and </wpkg> add the line

<host name=”yourcomputer” profile-id=”Test” />

Replacing “yourcomputer” with the network name of your workstation!

This tells wpkg that your computer should use the Test profile. If you want to assign more than one profile to a host then use this format.

<host name=”host1″ profile-id=”custom1″ >
<profile id=”addons1″/>
<profile id=”addons2″/>

Ok, now that we have assigned our computer to a profile we need to create the profile and then add a package to it.

So let’s edit the profiles.xml file.

I just deleted all of the example profiles and then created a single profile named test.
So between your profile tags it should look like:


<profile id=”Test”>
<package package-id=”dia” />


So now we have a host tied to a profile. And the profile contains one package called “dia”

Now we need to create our package, to do so let’s edit the packages.xml file. The packages.xml file contains a bunch of example so let’s scroll to right above the closing tag at the bottom.  (this is </packages>)

Next paste in (above the closing tag </packages>)

<package id=”dia” name=”Dia Diagram Editor” revision=”1″ reboot=”false” priority=”1″>
<check type=”file” condition=”exists” path=”%PROGRAMFILES%\dia\dia-0.96.1-8-uninstall.exe” />
<install cmd=’%SOFTWARE%\graphics\dia-setup-0.96.1-8.exe /S’ />
<upgrade cmd=’%SOFTWARE%\graphics\dia-setup-0.96.1-8.exe /S’ />
<remove cmd=’%PROGRAMFILES%\dia\dia-0.96.1-8-uninstall.exe /S’ />

I got this install definition from there is also a larger list of installers here:

Download a copy of Dia from


Create a folder inside your WPKG share named graphics and copy the dia-setup-0.96.1-8.exe into it.

Edit the settings of the package so that the install cmd= and upgrade cmd path is the direct path to where you copied the files.

<install cmd=’\\yourserver\wpkg\graphics\dia-setup-0.96.1-8.exe /S’ />
<upgrade cmd=’\\yourserver\wpkg\graphics\dia-setup-0.96.1-8.exe /S’ />

That finishes our Server Install.

Client Install

Download the stable WPKG Client from

Should be something like WPKG Client 1.2.1 (Not development release)

On your machine run the WPKG Client 1.2.1.msi (we will use it to create a config file to be pushed out to all the other machines)

You need to create a domain user with low user rights or use any old generic one if you have one. Basically this user needs to be able to read from the WPKG share.

So the first parameter you need to set is the remote path to your WPKG share. (Where wpkg.js resides)

This will be something like \\yourserver\WPKG\wpkg.js

You could also use the IP address which would look like \\\WPKG\wpkg.js
(I recommend using the IP address and making sure your server has a hard coded static IP address)

Ok, leave the WPKG parameters as they are (/synchronize /nonotify /quiet)

For the WPKG path user:
NOTE: you have to add WORKSTATION\, WORKGROUP\ or DOMAIN\ before the username):\username
For the WPKG path password: the password for this user account.

For the WPKG execution context, leave the User as SYSTEM and the password blank. This is the user that will be installing your packages.

Now hit the Test settings to verify your settings. If you run into trouble, double check all of your paths. If you run into the infamous “Multiple connections to a server or shared resource by the same user” error, then try referring to the server by a different name. For example use the ip address, or a full DNS name i.e. yourserver.yourdomain

You should not receive any [FAILED] results. When your settings are as you like them, press the export settings button to save them for later use. Now press Save. This will install the WPKG Service

Ok, let’s test to see if everything is working. We have our host defined, a profile assigned to a host, and packages as part of a profile. So, when we start the WPKG Service it should go and find our computer name, match it to the Test profile, and install the Dia package.

The quickest way to test is to go to start, run, type services.msc and then press ok. Scroll down to the very bottom and click on WPKG Service, and the start button. If everything is working as it should within a few moments you should see the Dia shortcut appear on your desktop.

Now you should install the WPKG client on all of your workstations using the settings.xml file.

One way is by using PSEXEC or using Active Directory.



  1. Great post. I’ve got WPKG setup in a test environment and it’s working fine for installing packages, but I can’t for the life of me figure out how to Pull a package off a machine or get any sort of history of what each machine has.

    If you have an answer to how to pull a package, or could do a post on how you use WPKG, that’d be fabulous.

    And if not, thanks anyway!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s