PDQ Deploy almost never fails silently — it leaves an exit code or an error message that names the cause. The skill is translation. This page decodes the failures you will actually meet, what each one truly means, and the fix that matches it.
Open any failed deployment and you will find one of a small set of culprits. Some are Windows Installer exit codes returned by the package itself; others are PDQ-side problems — credentials, reachability, an installer waiting for input. Read your error, find it below, and fix that. Retrying blindly fixes almost none of them.
3010 means the software installed and Windows wants a reboot to finish; 1641 means the installer already started that reboot. If your package's Success Codes field only contains 0, PDQ marks these as failures and your reports fill with red that should be green. Add both codes to every package — and when a deployment returns 3010, the honest follow-up is scheduling the reboot, not redeploying the software.
1603 is Windows Installer's generic fatal-error code: something inside the install failed, and the code alone will not say what. Open the step's output in the deployment details, and on the target look for the installer's own log. The recurring causes are a broken previous version that will not uninstall, a pending reboot from earlier updates, insufficient disk space, or the installer needing a prerequisite that is missing. Fix the cause on that machine class, then redeploy — 1603 rarely heals itself.
1618 — another installation is already in progress. Windows Installer runs one install at a time; wait for the other job (often Windows Update) to finish and retry1619 — the package could not be opened. The installer file is missing, corrupt, or the path in your step is wrong; re-copy it into the repository and test the package again1625 — forbidden by system policy. A Group Policy or restriction on that PC blocks the install; find the policy instead of fighting the PC1638 — another version is already installed. Uninstall the old version first (a pre-step in the package does this neatly) or use the vendor's upgrade-capable installerWhen PDQ itself reports access denied, the deployment never reached the installer. The Deploy User account is not a local administrator on that target, the password stored in PDQ is wrong or expired, or the target refuses the connection. Prove it the plain way: from the console, try opening \\PCNAME\ADMIN$ with the deploy account. If that fails, PDQ cannot succeed either — fix the account's rights on the target (the credentials guide in this series shows the safe setup) and the whole class of failures disappears at once.
Computer unreachable means the console cannot talk to the target at all — powered off, wrong name in DNS, or a firewall blocking file sharing. Check the basics in order: does the name resolve, does the PC answer, is it simply switched off until tomorrow (a case for heartbeat or the retry queue)? The last pattern is the hang with no error: the installer is open on the target waiting for a click nobody can see. That is a silent-switch problem, and the custom-package guide in this series shows how to hunt it down.
Watch the video's deployment-history section to see exactly where each target's status and error is recorded — that screen becomes your daily dashboard.
▶️ Watch Full Video1618 usually does, once the other installation finishes. Most others do not: 1603 needs its cause found, access denied needs the account fixed, and 1619 needs the file repaired. Retry is a tool for transient errors, not a repair strategy.
In the deployment's history: open the deployment, select the failed target, and read the step output and returned code. For MSI failures, the installer's own log on the target machine holds the deepest detail — PDQ shows you the code, the log shows you the reason.
Most likely the installer returned 3010 or 1641 and your package does not list them as success codes — or a post-step failed after a good install. Check which step failed before concluding anything, and fix the success codes so the history tells the truth next time.