I’ve been pushing for getting a proper utility to handle remote installations for a while, and being a Microsoft shop, we’re looking at Microsoft’s System Center Configuration Manager (SCCM). However there are a number of hold-ups on that project, so we’re currently using Lumension’s PatchLink1.
PatchLink is a good application, and handles the rollout of security updates for a variety of applications2 nicely. However it doesn’t handle custom installation packages, which is where SCCM comes in.
As SCCM is not a viable option at the moment, I decided to play with PDQ Deploy by Admin Arsenal. PDQ Deploy is a free application, a full featured teaser to their Pro version (See a comparison of their apps here). Unlike a lot of companies that release crippled sample applications, PDQ Deploy is very powerful, and very useful, and has only a few limitations compared to the Pro version. The site has some examples of basic setups, including deploying Adobe Reader, Office 2007, and XP SP3. For the really good samples, check out the blog where Shawn Anderson posts regular examples, and updates.
In most install cases, if you’re happy with the default options, you can run the MSI with the /quiet option, and let it take care of itself, however in this case, I knew I needed to change some of the values. Not knowing what those values were, or how they were processed, we needed to run a sample, and capture the output. This is done by executing the MSI using the msiexec command, and enabling logging. In my case, I did this:
msiexec /l* c:\temp\netapp\_host.log /i c:\temp\netapp\_windows\_host\_utilities_5.2_x64.msi
The /l* tells it to log everything to the netapp_host.log file, and the /i switch tells it to install. If you want to know more of the msiexec options, just type:
Once you’re running the installer, and you’ve setup your preferences working through the install, it’ll log all the options to the log file. There is one thing left to figure out, and that’s what the variables are from the file. In my example, I needed to turn on the MPIO option in the installer, so looking in the msi log file, I jumped to the bottom where there is a bunch of lines that start Property(C). This section is the list of all the variables that msiexec used to do the install with. Reading through those can be boring, but you might recognize a bunch of them already, such as WindowsFolder. After some digging, I stumbled on the two that were important; LicenseAccepted, and MULTIPATHING.
Property(C): LicenseAccepted = 1 Property(C): MULTIPATHING = 1
As I was happy with everything else being the default, these were the only two I cared about. These are handy to know, because that original command I had above that got me the log files, can have the above two variables appended, and it’ll set them, for example:
msiexec /l* c:\temp\netapp\_host.log /i c:\temp\netapp\_windows\_host\_utilities_5.2_x64.msi MULTIPATHING=1 LicenseAccepted=1
Now if I run the command, the license will be accepted automatically, and the multi-pathing/MPIO option will be default. If we added the /quiet option, we wouldn’t get any dialogs at all, and the install will run in the background with no user interaction. This is exactly what we need, and brings us to PDQ Deploy, and where it fits in.
Once installed, and running, simply click the “Add Installer”, select the path to the installer, tell it to do the quite install from the drop down, and for the parameters, put in the extras we discovered above. I knew this installer required a reboot, but I postponed that until after hours, so I told the restart to never run. Once you’ve filled in all the details, the Command Line box at the bottom will tell you what the msiexec command will look like, and it’s the same as above in my sample, and test install.
Once the installer has been created, the next step is to run the install, this is simply a case of hitting the “Deploy Now” button, where you’ll be presented with a targets tab, and authentication tab. The targets tab allows you to type in the hosts you want to apply the installer to, or if you’re using Active Directory, you can click the button, and select the hosts from there. It’s also possible to import from a csv/text file.
Now you’re all set, hit the Deploy button, and watch it copy files, and run the install. If you’re deploying to multiple machines, you can double click on the deployment, and it’ll give you a breakdown by host of what steps it is at, and if there are any errors.
You think that’s great, and saved you hours of labor logging onto all those servers, and doing the install? PDQ Deploy doesn’t stop there. It’s not limited to MSI based installs, it can do EXE installs too, as well as MSP patches (Microsoft Installer Patches), and a recent edition was the ability to execute PowerShell, and VBScript on the remote host. The Pro version can do even more, such as executing multiple actions during an install, scheduled deployments, and other cool stuff.
So if you have a bunch of servers, or even desktops, to manage, and you regularly have to perform remote installs, PDQ Deploy is worth a look at. It’s UI is easy to follow, and package deployment is a breeze, the hardest part is figuring out the MSI options if you don’t need the defaults.
What remote deployment tools do you use?