Deploy Adobe Reader (or any application) the Smart Way

We’ve written several articles on deploying Adobe Reader to your systems.


These articles contain deployment methods that certainly work however let’s get a little more advanced this time. Basically, we want to leave the stone-age of brute force deployments and only deploy the latest Adobe Reader to systems that don’t already have it installed. So, assuming you have PDQ Deploy installed and you have built your installer for Adobe Reader (see the above articles) let’s move forward. Oh, you’ll need to install PDQ Inventory as well. If you aren’t using it yet, no worries, it’s free to use.

Now, we can accomplish what we want by creating the necessary Inventory Collections which break down which systems do or don’t have Adobe Reader and which systems have older versions of Adobe Reader.

Open PDQ Inventory. Make certain your computers have recently been scanned. You can import the Collections or you can just create your own from scratch. To import the collections, extract the XML file from the zip archive and import via PDQ Inventory. (Go to File > Import or hit CTRL+i).

Here is what our Adobe Collection hierarchy will look when we finish. 

blog spc 20120418 Collection 0 Adobe Collections

Our first Collection is called Adobe Reader. It has only one filter which includes all systems which have any application whose name contains “Adobe Reader”.

Adobe Reader Collection

Our next Collection will contain all systems which have Adobe Reader X (version 10)

 Adobe Reader X Collection

Now let’s break it up a little more. Let’s create a collection which contains ALL systems that have Adobe Reader version 10 BUT don’t have the latest version of 10.1.3. To tdo this we will use the “version between” comparison. BTW, when you use “version between” the beginning and ending numbers ARE INCLUDED in the range. 

 Comparison Version Between


Let’s create a collection which contains all systems that have the latest version of Adobe Reader. At this writing the latest version is 10.1.3. This way we can expect membership in this collection to increase as we deploy the latest 10.1.3 (and the targets are subsequently scanned).

Adobe Reader Collection


This collection will contain computers which have Adobe Reader but the version is lower than 10. (e.g. Adobe Reader 9)

Adobe Reader Collection


Now let’s create a collection to contain all Servers that do NOT have ANY version of Adobe Reader. The collection below will probably be confusing. Look at it carefully. Notice that we have changed the Match Criteria (highlighted in yellow) from the default “Match All” to “Don’t Match Any”. Normally the Collections filter IN systems which match the filters. In the case below we will change the behavior to filter OUT systems which match the filters. 

We also have created 2 different filters. The first is an Operating System filter. In it we say that the Operating System Name does not contain the word “server”. Normally (using Match) this would mean that only Windows workstations would be members. However, since we are filtering OUT (Don’t Match) the filters the opposite will happen. Only machines that have the word Server in their OS Name will be included.

The second filter is an Application filter. In it we say that an Application name contains Adobe Reader. Once again, this would normally include computers which have this application however our Don’t Match changes that. Now we filter OUT systems which have Adobe Reader.


Servers missing Adobe Reader

OK, you may be asking “Hey Shane, why don’t you just have two filters where the first says Operating System contains server and the other says Application Name does not contain Adobe Reader?”

This logic is understandable but it is flawed. When you create an application filter that says “Name does not contain Adobe Reader” you are effectively saying that you will include any computer which has any application where the name doesn’t contain “Adobe Reader”. This means that a computer that has an application called “Microsoft Office 2010” would be included in the collection EVEN IF IT ALSO HAD ADOBE READER. This is expected in SQL logic. Let’s say that I have a computer called Butters with 3 applications installed. The installed applications are Microsoft Office 2010, Adobe Reader and Mozilla Firefox. This filter would be applied 3 times (once for each application) and if it found an application that didn’t contain “Adobe Reader” the test would pass. If you were typing the raw SQL n a query you would resolve this problem by using the Group By clause NOT HAVING. Well, by changing the Match to Don’t Match we are doing the same thing as using a NOT HAVING. Therefore by having a filter that says “Name contains Adobe Reader” we would find all systems that had any application called Adobe Reader but changing Match to Don’t Match (but keeping the filter the same) we would strip out any computer that passes the filter “Application Name contains Adobe Reader”.

The collection below is similar to the example above except in this one we are showing only Non-Server systems that don’t have Adobe Reader. Note, however, that I added a third filter. This filter will effectively remove any computer that has never been successfully scanned by Inventory.

Why is the third filter important in this case? Well, let’s say we have a computer called Homer. Homer has never had a successful inventory scan. With no inventory Homer would pass the filters below. Think about it. It would pass the first filter because it does, strictly, have an OS that doesn’t contain an OS name containing the word “server”. It passes the second filter because it doesn’t have an application called Adobe Reader. According to Inventory it doesn’t have ANY applications so, once again, it passes the test. I want to filter out Homer (and any other computer that has never had a successful inventory scan) until I know for sure what applications exist on Homer.

Adobe Reader Collection


In my lab these are the systems which are in this collection. 

Strip out Never Been Scanned


Now let’s see what happens when I remove the Computer Never Scanned filter. Note that I have two computers, Homer and Malory, that have never been scanned. Since they both pass the collection filters they show up.

 Strip out Never Been Scanned

 OK, now I can deploy Adobe Reader to the appropriate computers. If I wanted to deploy version 10.1.3 to my workstations that are missing Adobe Reader I would simply right click on the collection and select Tools > PDQ Deploy. (You need to have PDQ Deploy installed). Select your Adobe Acrobat Reader installer in PDQ Deploy. 

 Select your Adobe Reader installer

After you select your installer you will see that the computers in your selected collection are added to your Deploy Now window.


Strip out Never Been Scanned

Follow @admarsenal on Twitter