Note: If you’re looking for a Java-specific 1603 error, you will want to check out this blog post.
I’m going to spend some time on this damn error. I swear this error message is the “exit code” dumpster for Windows. It seems, on its face, to be the most useless exit code consistently thrown by Windows.
When you run into a 1603 error, don’t panic. There are a number of reasons that installations throw this error. Most of the time it is because “someone was expected but never showed up”. That “someone” could be another Installation file, inadequate permissions to a directory or file (which you’d expect to see Error Code 5, the standard code for Access Denied events), an expected registry or WMI value, an environment variable, a network drive, etc. Antivirus software has also been known to be the cause of directories or files being unavailable and thus cause a 1603 error.
Let’s say that you start an installation. The installation needs to refer to some files on a network share called \\Katrina\SharedDirectory. If SharedDirectory, for whatever reason, becomes unavailable after the installation has started and our installation attempts to access her data, well, your installation will, most likely, throw a temper-tantrum all over your hard drive. Chances are that all you will see at the end littered calling cards all emblazoned with “1603”.
Microsoft has stated that there are three primary reasons for 1603:
You are attempting to install to an encrypted drive or directory
You are attempting to install to a substituted drive
SYSTEM account does not have necessary permissions on the target directory
Of these three I’ve seen number three be the culprit the most.
It is very important to take your time with MSI related errors. Read log files. Verify permissions. Attempt an installation manually before you try a deployment. Consider the active protection offered by your antivirus software.
Common sense and a Robert-DeNiro-in-The-Untouchables-baseball-bat are really the only tools you need.