Chris Reinking


NOTE: While this project was meant for use with the program PDQ Deploy, it is not affiliated with or endorsed by the Admin Arsenal team

This is a simple program that was written to assist with the deployment of updates in PDQ Deploy. It can be used with the free or pro version, however the included steps are for the Pro version.

-Warns user of update being deployed and gives option to decline
-Automatically proceeds if no response from user
-Customizable warning message

Included in the files section:
-.exe executable for program (pdqupdateprompt.exe)
-.vbs script to copy files to machine
-.xml installer file for import of steps into PDQ Deploy Pro

Not Included but Needed:
-PsExec.exe (found in PsTools from Microsoft Systernals)
-.NET Framework 3.5

Binaries were compiled in Visual Studio 2010 Express and written in C# .NET

Getting Started

The first thing to do is download the exe, vbs, and xml files from the downloads section. Once downloaded, copy the files to a network share that is accessible by the user that is used in PDQ Deploy to push out installers.

Once a network path has been determined, open the vbs script and edit the "//pathto/networkshare" lines to reflect your location. There is also a line in the xml file that likewise needs replaced.

Now import the steps into PDQ Deploy by opening PDQ and going to File > Import and choose the xml file. These steps can then be copy and pasted into any installer. Steps 1 and 2 should be at the very beginning of any package. Step 3 is optional and would go at the end of the package.

How It Works

When the first step is called, it runs the vbs file. The vbs file is a script that copies PsExec and the PDQUpdatePrompt.exe to the client's machine. PsExec is copied to the Windows\System32 directory and PDQUpdatePrompt is copied to C:\Temp. If C:\Temp doesn't exist, it creates the folder. Also if either file already exists, it is not re-downloaded thus saving a little time and bandwidth.

The second step then uses PsExec to call the PDQUpdatePrompt. There are two things to note here. First, PsExec displays the UI to session 1 on the machine. In my testing, I've found that session 1 is where the user is logged in most of the time, however this is not always the case. I am working on improving that (see below section). The message that is displayed is customizable. When calling PDQUpdatePrompt, you can simply type in quotes what you want the message to say after the command (example: PDQUpdatePrompt.exe "test message" ). If not argument is passed, it will simply display a default message saying that an update is about to be deployed. The user has the option to apply the update or decline. If declined, the program will return a code of 1 which will then stop the package from running (it will show up as "failed error code 1" in PDQ Deploy). If the user clicks apply update or does not click any button within 30 seconds, the PDQ package will continue deploying the update.

Step 3 is optional but it uses a msg box to tell all users that the update is finished and they can use their computer again. Not needed but may be helpful in case a program needs to stay shut during the install process and then notifies the user they can open the program once again.

Current Issues/Roadmap

I have this program listed as in an "alpha" state due to the limited amount of testing I've been able to do. As of now, this little program has only been used in packages being deployed to Windows 7 machines (both x86 and x64) with success. No testing has been done on previous versions of Windows nor Windows 8.

In addition, I would still like to find a better way of identifying which session is currently active on a computer. Relying on the user being in session 1 is not the best way of doing things. Any help in that area would be appreciated.