Windows doesn’t have the best reputation when it comes to providing descriptive error messages. Depending on the situation, you may not even receive an error message. For example, if you’re running a Windows installer, you may be provided a very informative error code like 1603… Wow, thanks Microsoft. Very insightful.
If you’re staring at an error code that may as well be a message written in Vulcan, we can help. Here are several resources to help you interpret that noninformative error code.
What is an error code?
An error code, sometimes called an exit or return code, is the value that is returned when a process completes. Microsoft has a list of predefined error codes that are used by the Windows Installer (msiexec.exe) utility, but third-party vendors may utilize their own list of error codes.
The term error code can be a bit misleading. You might expect an error code would only return when an error is encountered, but that’s not accurate. Error codes are always generated, and there are many error codes that indicate success. In fact, the most common error code, 0, means that the command or process completed successfully.
Microsoft’s list of error codes
Microsoft is very aware that a simple error code number isn’t enough to help users diagnose an installation error. To compensate, they provide a list of all their error codes and their meanings online.
Simply click on the link associated with the error code number and scroll through the list until you find the code you’re looking for. While I prefer my error messages brimming with useful information and maybe a motivational quote, a massive error code list straight from the source also works.
Identify error codes using the Microsoft Error Lookup Tool
If you’re looking for a local resource to help you identify installer error codes, why not try Microsoft’s Error Lookup Tool? The Error Lookup Tool is a simple command line tool that can help identify error codes. Best of all, it doesn’t require you to install anything and doesn’t require elevated admin rights. Here’s how to use it.
Download the Error Lookup Tool from Microsoft.
Type cmd into the Windows search bar, then click on Command Prompt.
In the console window, enter the path to the utility, followed by the utility name and the error code, then run the command.
From the results, we can see that the error code 1641 indicates a process completed successfully and has initiated a reboot.
Identify error codes with CertUtil
CertUtil is another local resource that can be utilized to identify error codes. The great thing about CertUtil is that you shouldn’t have to download anything since CertUtil comes natively installed with Windows operating systems. Here’s how to use it.
Launch Command Prompt.
Enter CertUtil /error followed by the error number into the console, then run the command.
In this example, I searched for the error code 128. This error code indicates that no child processes were found and is commonly returned when a script tries to stop a process that doesn’t exist.
PDQ’s helpful list of error codes
If you’ve looked at the error code lists provided by Microsoft, you’ll know that there are thousands of error codes out there. And that’s not including third-party installers. While the list of error codes may seem daunting, the truth is that you’ll probably only ever encounter a handful of error codes. That’s why we’ve built our own list of error codes.
PDQ’s list of common deployment error codes is designed to help users quickly identify error codes they’re likely to experience, leaving all the clutter for the other lists. We developed the list from our years of experience in troubleshooting installs and deployments. With millions of deployments and installs under our belts, it’s safe to say we know a thing or two when it comes to installs and error codes.
There are a couple of other features that set our list apart from other lists out there. We provide in-depth information about many of the error codes on the list, giving examples of when and why you might encounter a specific error. We also include common error codes that you may encounter with non-MSI installers.
The dreaded 1603 error code
Perhaps the most common error code thrown by installers that actually indicates a problem with the installation is the dreaded Windows Installer Error 1603. Why is it dreaded? Because it seems to be a catch-all for numerous problems you could encounter during an installation. Microsoft’s super descriptive description for 1603 is “Fatal error during installation.” Again, thanks Microsoft.
To help shed a little more light on this troublesome error code, here are a few possible reasons you may encounter 1603.
Additional files or resources are required
Antivirus could be deleting install files
You’re attempting to install to an encrypted drive or directory
SYSTEM account doesn’t have the necessary permissions on the target directory
A file is locked and can’t be overwritten
Unfortunately, there is no single solution to resolve these problems. It’ll take some detective work on your part. The first and probably easiest thing to check is whether the installation has access to all the required install files. If the install files are on a network location, ensure the location is reachable by the account running the installation. If this is part of a deployment using PDQ Deploy, ensure the setting to include the entire directory is checked if necessary. Also, check to ensure your antivirus solution isn’t deleting necessary files on accident.
Another important troubleshooting step is to enable verbose logging when running the install. Run the installation with these additional parameters to generate verbose log files:
msiexec /i <installer.msi> /l*v c:\log\install.log
Verbose logging should help you zero in on the exact cause of the 1603 error.
Don’t let error codes get you down
If there was one thing I could immediately improve about the Windows operating system, it would be its error messages. While I’m sure there are deep-rooted technical reasons why we get gibberish for error messages, it sure would be nice to have a descriptive error message written in plain English. Maybe one day. Until then, hopefully this article helps you diagnose your own error messages.
Make sure to use this newfound knowledge to enhance your deployments with PDQ Deploy and PDQ Inventory. Not already a proud member of the PDQ family? No problem! You can try out Deploy and Inventory for free for 14 days.
Born in the '80s and raised by his NES, Brock quickly fell in love with everything tech. With over 15 years of IT experience, Brock now enjoys the life of luxury as a renowned tech blogger and receiver of many Dundie Awards. In his free time, Brock enjoys adventuring with his wife, kids, and dogs, while dreaming of retirement.