How to tell your remote software installation to REALLY shut-up

MSIEXEC REBOOT=REALLYSUPPRESSMsiexec is a good friend to many an admin who deploys software remotely. It has great arguments (or switches) that can make your life as a Windows administrator much easier.

One of these is

REBOOT=REALLYSUPPRESS

msiexec /i < your_msi_file > /q REBOOT=REALLYSUPPRESS

It does what it implies; it stops not only a reboot but any dialog that the user might see telling them that a reboot is necessary. If you absolutely don’t want the system to reboot after an installation, I suggest making this a default argument for your remote deployments.

Now for my Billy Mays impersonation…

“But wait! There’s more…”

Actually, there really is more. The error code.

Too often the error codes can be merely glanced at, or worse, outright ignored. It’s a good idea to verify that they are a 0 value (meaning no errors detected). However, not all non-zero error codes are created equally. (Note: Error code and Exit code are synonomous). 

3010 is an important code to detect. It’s official definition:

3010 - The requested operation is successful. Changes will not be effective until the system is rebooted. 

If your deployment requires a reboot and you suppress you may feel that you don’t need this error code, but I would ask you to reconsider. The fact that this code was generated is further evidence that your package was installed the way that you expected it to be. 

Any administrator who has been deploying for awhile will certainly have seen instances where an error code of 0 (successful) is returned on a remote software installation when upon further investigation it is determined that the software wasn’t installed at all, or worse yet, wasn’t installed correctly.

So… Really suppress the reboot. Evaluate the exit code. Move on to more important tasks (they’re starting to pile up).