Why MSI Packages Fail to Install via GPO in Domain
Troubleshoot MSI packages not installing through Group Policy in Active Directory domains. Fix GPO scope, UNC paths, permissions, network timing, and MSI logging issues for reliable software deployment.
Why aren’t MSI packages installing through GPO in the domain?
I’m deploying MSI packages through Computer Configuration -> Policies -> Software Settings -> Software Installation. The network paths are correct, and domain computers have read access to the network folder. In the MSI installation logs, only the start and end of the process are visible without errors, but applications don’t appear on the computers. What could be the problem and how can I fix it?
MSI не устанавливается через GPO usually because the package never runs in the machine context — commonly due to scope/security errors, the computer account not being able to read the UNC share at startup, or the package requiring user interaction/transform. Check GPO scope and security filtering, confirm you used a proper UNC path with read for the computer account, enable “Always wait for the network at computer startup and logon”, and turn on verbose Group Policy / MSI logging to see the real failure.
Contents
- Quick checklist: immediate checks
- How GPO software installation actually runs
- Most common causes and fixes
- Step-by-step debugging (what to run and where to look)
- Tricky cases: EXE wrappers, transforms, advertised installs
- Best practices to make MSI GPO installs reliable
- Sources
- Conclusion
Quick checklist: Why MSI not installing through GPO
- GPO applied? Run
gpresult /h c:\gpo.htmlorgpresult /ron a target machine and verify the GPO appears under Computer Configuration → Software Installation. - UNC path correct? The package must be referenced by a UNC path (\server\share\package.msi), not a mapped drive or a local path. See Microsoft guidance on UNC usage.
- Permissions: both share and NTFS must allow the computer account (Domain Computers) or Authenticated Users to read and execute the MSI.
- Deployment type: the package must be Assigned to computers (in Computer Configuration) — Published does not auto-install for machines.
- Network readiness at startup: if the machine starts before the network is available the system‑context install can silently fail; enable the startup network wait.
- Is the MSI an EXE wrapper? If so, extract the MSI (or package the MSI itself) — GPO software installation requires a true MSI or an installable MSI wrapped properly.
If you tick those off and still see only “start” and “end” in the MSI logs with no errors, read on — there are several subtle failure modes and diagnostic steps below.
How GPO software installation actually runs (Computer vs User)
When you assign an MSI under Computer Configuration → Policies → Software Settings → Software Installation, the installation occurs during machine startup and runs under the Local System account (machine context). That matters because:
- The computer account (DOMAIN\COMPUTER$) is used to access the network share. That’s different from your user account.
- Install happens before user logon, so if file servers or authentication aren’t ready the CSE may be unable to read the package.
- Published packages (user context) behave differently — they may be advertised and only install on demand.
Microsoft’s how-to notes on deploying software by Group Policy explain these constraints and the requirement to use UNC paths for the package location: https://learn.microsoft.com/en-us/troubleshoot/windows-server/group-policy/use-group-policy-to-install-software
Most common causes and fixes
Below are the frequent root causes in order of how often they bite admins, with quick fixes.
- GPO not actually applying (scope/security filtering)
- What to check: GPO is linked to OU with the computers, security filtering includes the target machines (Authenticated Users or Domain Computers), no blocking/deny or WMI filter excludes them.
- Fix: Use
gpresult/RSOP to confirm. If the GPO isn’t listed, correct the link or security filtering.
- Wrong path or permissions on the share
- Symptom: msiexec log begins and ends but package never installs because it can’t access the MSI.
- Fix: Use full UNC path in the package properties (don’t rely on mapped drives or admin workstation paths). Grant read & execute on both the share and NTFS to
Authenticated UsersorDomain Computers. See Microsoft guidance on UNC path usage above.
- Network not ready at machine startup
- Symptom: the machine tries to run the installation before it can authenticate to the file server.
- Fix: Enable “Always wait for the network at computer startup and logon” under Computer Configuration → Administrative Templates → System → Logon. Consider setting “Specify startup policy processing wait time” if the network is slow. DeployHappiness documents network timing as a common cause: https://deployhappiness.com/top-10-ways-to-troubleshoot-software-deployment/
- The package is authored as a wrapper/EXE or requires user interaction
- Symptom: installer needs UI, temporary MSI only created during interactive install, or an EXE extracts an MSI at runtime.
- Fix: Extract the MSI and deploy that, or use an installation script/Task Scheduler/GPO startup script that runs the EXE silently. The Russian packaging guide spells out MSI extraction approaches (run the EXE once and look in %temp% or extract with 7‑Zip): https://winitpro.ru/index.php/2011/10/21/ustanovka-programm-s-pomoshhyu-gruppovyx-politik/
- Package is Published or advertised, not Assigned
- Symptom: nothing installs automatically; users may see the app in Add/Remove Programs as advertised.
- Fix: Re-deploy as Assigned to Computers (for automatic machine install).
- Missing MST or incorrect transform/application properties
- Symptom: MSI requires MST or properties to apply silently; GPO deployment doesn’t include them.
- Fix: Add transforms in the GPO package properties or rebuild the MSI to include required properties.
- Conflicting/older GPOs or previous install state
- Symptom: an earlier failed or partial install leaves product codes that block reinstallation.
- Fix: Clean the system (uninstall or remove MSI product code) and re-deploy. Use verbose logs to identify this.
Step-by-step debugging (what to run and where to look)
Want a reproducible workflow? Follow these steps on one test machine.
- Confirm the GPO reaches the machine
- Run:
gpresult /h C:\gpo-report.html(open the HTML and verify the GPO shows under Computer Configuration → Software Installation). The Microsoft Q&A thread and community answers stress gpresult as the first check: https://learn.microsoft.com/en-us/answers/questions/350089/gpo-for-msi-installers-doesnt-work-i-dont-know-why
- Check Event Viewer
- Look under Windows Logs → Application for events from source “MsiInstaller”. Also check Applications and Services Logs → Microsoft → Windows → GroupPolicy → Operational for CSE activity and errors. ServerFault advice reinforces looking in the event log for MsiInstaller messages: https://serverfault.com/questions/345395/deploying-msi-application-through-gpo-doesnt-work
- Verify UNC accessibility as the computer account
- The package must be readable by the machine. A practical test: run a command prompt as Local System (for example with PsExec:
psexec -s -i cmd.exe) then trydir \\fileserver\share\package.msi. If the SYSTEM account can’t list the file, the GPO install can’t either.
- Force policy and reboot
gpupdate /forcethen reboot to trigger software installation at startup. Remember: computer-assigned installs happen at boot, not after a quick gpupdate in the user session.
- Enable verbose Group Policy Software Installation (AppMgmt) logging
- To get detailed CSE logs enable the AppMgmt debug level (advanced / registry edit). The community guide shows the key:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics→AppmgmtDebugLevel = 0x9Band the CSE log will be created underC:\Windows\Debug\usermode\appmgmt.log(or legacy C:\WINNT\debug\usermode\appmgmt.log). That gives you packaging-level diagnostics beyond the MSI events. See the community guide: https://winitpro.ru/index.php/2011/10/21/ustanovka-programm-s-pomoshhyu-gruppovyx-politik/
- Reproduce the installation manually as SYSTEM and capture MSI verbose log
- From SYSTEM:
msiexec /i "\\fileserver\share\package.msi" /qn /l*v C:\Windows\Temp\msi_install.log— then inspect msi_install.log for return codes, file copy errors, or missing components. Running as SYSTEM emulates the GPO machine‑context install and usually exposes access or UI requirements.
- Search logs for common phrases
- Look for “access denied”, “could not open database”, “error”, or “return value 3/1603” (these indicate permission or MSI runtime failures). If logs show no action, the package itself may not have been found or the install was advertised only.
- If logs remain inconclusive, try a minimal repro:
- Put the MSI in a very open share (temporarily give Everyone read), type the UNC explicitly into GPO, unlink other GPOs, and reboot a test machine. If this works you’ve isolated a permissions or scope issue.
Tricky cases: EXE wrappers, transforms, advertised installs, and timing
- EXE wrappers and installers that create an MSI temporarily: GPO cannot deploy an EXE that extracts an MSI to %temp% at runtime. You must extract and deploy the real MSI. The RU guide shows extraction techniques and why that matters.
- Transforms (MST) must be correctly attached in the GPO package properties. If a required MST is missing the silent install will behave differently.
- Advertised installs: some MSIs are authored to advertise components and only install when a feature is used; that looks like “nothing installed” to you. Use authoring tools or change the package to a full install if you need it present at startup.
- File replication/DFS latency: if you keep the MSI on a DFS path or recently updated the package, replication delays can cause some domain controllers to serve different content. Keep the package on a stable file server and avoid relying on SYSVOL copies unless you understand how GPMC handled the package.
When the MSI log shows only a start and end, it often means the msiexec engine started but couldn’t find payload files or had nothing to do — test with manual SYSTEM install and verbose logs to confirm.
Best practices to make MSI GPO installs reliable
- Always use a full UNC path (\server\share\package.msi) when adding the package in GPMC. Do not use mapped drives. (Microsoft docs call this out.)
- Grant read & execute on both share and NTFS to
Authenticated UsersorDomain Computers. Explicitly testing as the computer account is worth doing. - Use Assigned → Computer for machine installs. Use Published → User only if you want on-demand installs.
- Enable “Always wait for the network at computer startup and logon” for installations that must run at boot. Consider increasing the startup policy wait time if your environment is slow.
- Test installation manually as SYSTEM (psExec) to replicate the machine‑context execution. Capture verbose MSI logs with
msiexec /l*v. - Keep single-source packages on a stable file server (not a user workstation). If you must update the MSI, change the filename or product code to avoid confusion with cached versions.
- Consider modern management tools (SCCM/Intune) if you need more reliable software distribution at scale — GPO software installation is simple but brittle in larger, complex environments.
Sources
- Use Group Policy to remotely install software - Microsoft Learn
- Deploying .msi application through GPO doesn’t work - Server Fault
- Top 10 Ways to Troubleshoot Software Deployment - DeployHappiness
- Установка программ с помощью групповых политик (RU) - winitpro.ru
- GPO for MSI installers doesn’t work - Microsoft Q&A
Conclusion
If “MSI не устанавливается через GPO”, start by confirming the GPO applies to the computer, that the package path is a UNC accessible by the computer account, and that the network is available at startup. Enable verbose AppMgmt and MSI logging, reproduce the install as SYSTEM, and you’ll almost always find either a permission, timing, or packaging issue — fix that and the installs will start to succeed.