Fix it now
1618 is ERROR_INSTALL_ALREADY_RUNNING: another installation is already in progress and yours was refused rather than queued. Microsoft documents the mechanism as the _MSIExecute mutex, held while an execute sequence runs, and the documented way to know whether the installer is busy is to ask the service – not to count msiexec processes or kill them.
sc query msiserver
tasklist /fi "imagename eq msiexec.exe"
- Read the CONTROLS_ACCEPTED line from
sc query msiserver. Microsoft’s documented test is that the Windows Installer service is considered to be running when it reports accepting shutdown; that is the check a well-behaved installer makes before it starts. - Give it time. Windows Update and large suites hold the mutex for many minutes, and a refusal is the installer being correct rather than broken.
- Check the obvious holders: Windows Update, the Microsoft Store, and third-party updaters for browsers, readers and OEM management tools. Let them finish.
- If a restart is pending, take it. Transactions frequently do not clear until the machine has restarted.
- In deployment scripts, retry on 1618 after a delay rather than terminating anything.
One msiexec.exe in the process list is normal even when nothing is installing – the service instance lingers. Killing that one achieves nothing and can leave a half-applied transaction behind.
If your installation now starts, you are done. If 1618 persists with nothing visibly installing, the next section explains what actually holds the lock.
Why it happens
Windows Installer serialises installations with a machine-wide mutex called _MSIExecute. Microsoft documents when it is held: while the installer is processing the InstallExecuteSequence, AdminExecuteSequence or AdvtExecuteSequence tables – in other words, during the part of an installation that actually changes the machine. A second caller is refused immediately with 1618 rather than made to wait, and it is left to the caller to decide whether to try again.
There is a second, less obvious way to get 1618, and it explains cases where nothing else is installing. Microsoft states that the error is also returned while the current process is processing the InstallUISequence or AdminUISequence table. Two installations cannot run in the same process, so a bootstrapper that launches a package while its own user interface sequence is still running collides with itself.
Microsoft’s own advice is not to guess from the process list. Where returning 1618 is impractical, the documented approach is to retrieve the current status of the Windows Installer service before starting, using QueryServiceStatusEx, and to treat the service as running when the returned status reports that it accepts shutdown. From a command prompt the equivalent is sc query msiserver and the CONTROLS_ACCEPTED line – which is a far better signal than counting msiexec processes, because the service instance lingers after every transaction.
Windows Update or the Store is installing something
You have this one if Windows Update reports work in progress or a pending restart, and the refusal clears on its own after a while.
- Open Settings, Windows Update, and let any in-flight work finish.
- If a restart is pending, take it before trying again.
- For scripted deployment, add a pre-check that skips the run while updates are being applied.
A background vendor updater holds the lock
You have this one if 1618 appears at predictable times of day, on machines carrying a browser, reader, driver tool or OEM management agent that updates itself.
- Identify the updater from its scheduled task or service rather than from the process list.
- Wait for it to complete rather than terminating it mid-transaction.
- Where the collision is regular, move your own deployment window, or disable that updater’s scheduled task on managed machines.
- Retry.
An installation is waiting for input nobody can see
You have this one if The installer service has been busy for a long time with no disk or processor activity, and a second user is signed in to the machine.
- Check for other sessions:
query userfrom an elevated prompt. - Connect to that session, if it is yours to use, and answer or cancel the dialog.
- If the session is orphaned, log it off cleanly rather than killing processes inside it.
- Retry once the installer service reports idle.
A per-user installation was left incomplete by another account
You have this one if 1618, or messages 1502 and 1503 in a log, on a shared machine where the same product was installed under a different account.
- Read the message carefully: 1502 ends with “Your current install will now continue”, so it is informational. 1503 does not, and your install stops.
- Have the named user sign in and run their installation again, which is what both messages ask for.
- Where the product should be per-machine rather than per-user, deploy it that way instead; shared machines and per-user installs make this recur.
A crashed installer never released the lock
You have this one if The installer service still reports busy long after everything else has settled, and a reasonable wait has changed nothing.
- Stop the service half:
net stop msiserver. - Reboot before installing anything else, so any half-applied transaction is resolved during startup.
- Re-run the failed installation with
/l*vlogging and watch it complete cleanly this time.
Killing msiexec during an active transaction can leave a product half-installed and half-registered, which is considerably harder to clean up than waiting. Expect to repair or reinstall whatever was in flight.
Full reference
The codes, and which are exit codes
| Code | What it is | Microsoft’s text |
|---|---|---|
| 1618 | Exit code, ERROR_INSTALL_ALREADY_RUNNING | Another installation is already in progress. Complete that installation before proceeding with this install |
0x80070652 |
The same 1618 in an HRESULT | 0x8007 is the Win32 facility and 0x652 is 1618; a bootstrapper reporting this is reporting 1618 |
| 1500 | Internal message | Another installation is in progress. You must complete that installation before continuing this one |
| 1502 | Internal message | User ‘[2]’ has previously initiated an install for product ‘[3]’. That user will need to run that install again before they can use that product. Your current install will now continue |
| 1503 | Internal message | User ‘[2]’ has previously initiated an install for product ‘[3]’. That user will need to run that install again before they can use that product |
The difference between 1502 and 1503 is one sentence and it is the sentence that matters. 1502 tells you the incomplete per-user installation has been noticed and your installation continues anyway. 1503 makes the same statement without that assurance. If you are reading a log and trying to work out whether the earlier user’s problem stopped you, that clause is the answer.
Handling 1618 in deployment
In unattended deployment 1618 is a timing collision, not a fault, and the correct response is to try again. Wrap the installation in a retry loop with a delay of a minute or two and a sensible attempt limit, and treat repeated refusals as a scheduling problem to solve rather than a package to force. Configuration tools that let you define retry behaviour on specific exit codes should carry 1618 in that list. Microsoft’s documented pre-check – query the installer service’s status before starting – is better still, because it avoids the collision instead of recovering from it.
What the Application log will and will not tell you
Microsoft’s published Windows Installer event list covers product-level outcomes rather than transaction boundaries: 1033 records an installation completing with a status, 1034 a removal, 1035 a configuration change, 1036 an update, and 11707 and 11708 the success and failure of an installation operation. There is no documented event for the start of a transaction, so if you are hunting for one you are relying on undocumented behaviour. Use the installer service’s own state for “is it busy now”, and the 103x events for “what happened, and when”.
| Question | How to answer it |
|---|---|
| Is the installer busy right now? | sc query msiserver and the CONTROLS_ACCEPTED line |
| What was installed, and did it work? | Application log events 1033 to 1037, and 11707 or 11708 |
| Which package is mine failing on? | Run it with /l*v and read the log |
| Is a restart pending? | Settings, Windows Update – and take it before retrying |
When it will not clear at all
- Reboot before anything more drastic. A restart resolves pending transactions during startup and clears the mutex as a side effect.
- Check for a second signed-in session with a dialog waiting on it.
query userfinds it and this is a common cause on shared machines. - Check whether a management agent is retrying a failed package every few minutes, which produces a machine that is almost never free.
- If a product really was interrupted mid-transaction, expect to repair or reinstall it once the lock clears, and check its files and registration rather than assuming it is intact.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
1618 |
ERROR_INSTALL_ALREADY_RUNNING: another installation is already in progress; the _MSIExecute mutex is held while an execute sequence runs | Microsoft Learn |
0x80070652 |
The same refusal in HRESULT form: facility 0x8007 with 0x652, which is 1618 | Microsoft Learn |
1500 |
Another installation is in progress. You must complete that installation before continuing this one | Microsoft Learn |
1502 |
A named user previously started an install for this product and must run it again; this message ends by saying your current install will now continue | Microsoft Learn |
1503 |
The same incomplete per-user installation, reported without the clause that lets the current install continue | Microsoft Learn |
Event ID 1040 |
Widely seen in the Application log from the MsiInstaller source at the start of a transaction, but absent from Microsoft’s published Windows Installer event list, so treat it as undocumented and use the installer service’s own state instead | not published in Microsoft’s Windows Installer event list |
Confirm the fix worked
- Your installation starts rather than returning 1618.
sc query msiservershows the service idle again a short time after the install finishes.- The Application log carries a 1033 or 11707 for your product with a success status.
- A second, small package installs straight afterwards, which proves the lock is being released normally.
- On a machine where you stopped the service, confirm whatever was in flight is intact rather than half-installed.
Questions people ask about this
Do I need to buy anything to clear this?
No. 1618 is a scheduling collision, not a licensing state, and everything above uses tools already on the machine.
How long should I wait before intervening?
Give it at least ten minutes, and considerably longer where Windows Update or a large office suite is involved. Check the installer service’s state rather than the process list before concluding anything is stuck.
Is it safe to stop the Windows Installer service?
It is safe when no transaction is genuinely running. If one is, stopping the service aborts it and you may be left with a partly installed product. Confirm the service is idle first, then reboot after stopping it.
Can I run two installers at once if they are different products?
No. The mutex is machine-wide rather than per product, so two unrelated packages still collide. That is why deployment tools serialise their own installations.
Why do I get 1618 when nothing at all is installing?
Two documented possibilities. The mutex is held by an execute sequence you cannot see – often a background updater – or your own process is already running a user interface sequence, because two installations cannot run in the same process. A bootstrapper that launches a package from inside its own setup collides with itself this way.
