Windows installation errors

An installer failed and gave you a number. These pages say what each code actually means, and list the fixes in order of how often each one turns out to be the answer.

We cover installation and file errors, because that is what this site is about. For anything else Windows throws at you, this is not the right place and we would rather say so than pad the list.

Every Windows Installer code, in one table

The list is finite and the numbers never change, so here it is in full. The linked ones have a page of their own because they need more than a line; for the rest, the line is the answer.

CodeWhat Windows means by it
1601The Windows Installer service could not be started.
1602The user cancelled the installation.
1603Fatal error during installation. The catch-all: read the log.
1604Installation suspended, incomplete.
1605This action is only valid for products that are currently installed.
1606Could not access network location.
1607The components for configuring the installer are not installed.
1608Could not find any previously installed compliant products.
1609An error occurred while applying security settings.
1610The setup files are corrupted or missing.
1611The installation media is invalid.
1612The installation source for this product is not available.
1613This package cannot be installed by this version of Windows Installer.
1614The product is uninstalled.
1615The SQL query syntax is invalid or unsupported.
1616The record field does not exist.
1618Another installation is already in progress.
1619This installation package could not be opened.
1620This installation package could not be opened: it may not be a valid package.
1621There was an error starting the Windows Installer service user interface.
1622There was an error opening the installation log file.
1623This language of this installation package is not supported by your system.
1624There was an error applying transforms.
1625This installation is forbidden by system policy.
1626The function could not be executed.
1627The function failed during execution.
1628An invalid or unknown table was specified.
1629The data supplied is the wrong type.
1630Data of this type is not supported.
1631The Windows Installer service failed to start.
1632The Temp folder is full or inaccessible.
1633This installation package is not supported by this processor type.
1634Component is not used on this machine.
1635This patch package could not be opened.
1636This patch package could not be opened: it may not be a valid package.
1637This patch package cannot be processed by this version of Windows Installer.
1638Another version of this product is already installed.
1639Invalid command line argument.
1640Installation from a Terminal Server client session is not permitted.
1641The installer has started a reboot.
1642The installer cannot install the upgrade patch: the product may have been updated.
3010Success, but a restart is required. Not a failure.

Codes beginning 0x8007 are different: those are Windows error codes wrapped by the installer, and the last four hexadecimal digits are the real one. Several of them have their own page above.

The step almost nobody takes

Before debugging an installer, confirm the installer is intact. A truncated or modified download produces errors that look like configuration problems and waste hours. Check the file's SHA-256 against our index first: it takes seconds and rules out an entire category of cause.

Common questions

How do I get a verbose log from a Windows installer?
For an MSI, run msiexec /i "package.msi" /L*v "%TEMP%\install.log" from a command prompt and open the file it writes. Many downloads are an .exe wrapping an MSI instead, and those usually accept /log or /l with a path of their own; where a program declares its own switches we list them on its page. The log is the difference between guessing and knowing, and for a code as generic as 1603 it is the only real way forward.
What do I look for in an installer log?
Search it for "Return value 3". Windows Installer records a return value for every action it runs, and 3 is the one that means the action failed, so the lines immediately above it name what was actually being attempted when everything stopped. That is the cause. The error code you saw on screen is only the summary that got reported afterwards.
Why does the same failure show a different code each time?
Because several layers each report it their own way. Windows Installer has its own numbers, the wrapper around it has others, and Windows itself wraps failures again as hexadecimal HRESULTs. That is why the same underlying problem can appear as a four-digit number in one place and an 0x8007 value in another, and why the four hex digits at the end of those are worth converting: they are usually the original code.
Is a failed install always the installer’s fault?
Often it is not. A truncated download, a previous version that did not uninstall cleanly, a locked file held by a running process, or a policy on a managed machine all produce errors that read like the installer is broken. Confirming the file matches its published hash removes the first of those in seconds, which is why it is worth doing before anything else.