-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Update 2026-03-13: Full analysis and tested fix posted in the comments further below 👇
Description of Issue
Summary
When the SERVICEACCOUNT property is set to an account that does not exist on the target machine, the installer fails with Error 1923 and the message:
"Service 'PowerShell Universal' (PowerShellUniversal) could not be installed. Verify that you have sufficient privileges to install system services."
This message is incorrect and misleading. The install is running fully elevated (Privileged = 1, MsiRunningElevated = 1). The actual cause is that the Windows Service Control Manager (SCM) could not resolve the supplied account name and returned a failure to CreateService, which Windows Installer surfaces generically as Error 1923 regardless of the underlying reason.
Product
PowerShell Universal
Version: 26.1.3
Manufacturer: Devolutions, Inc.
Package: Devolutions.PowerShellUniversal.2026.1.3.0.msi
Steps to Reproduce
- Launch the MSI installer interactively (double-click or
msiexec /i). - Proceed through the wizard until the service account input screen.
- Enter a service account that does not exist on the machine or domain (e.g.
contoso\psu_servicewhere the account is absent). - Enter any password and click Next / Install.
- Observe the failure dialog at the service installation step.
Note: A verbose log was captured in parallel using:
msiexec /i Devolutions.PowerShellUniversal.2026.1.3.0.msi /l*v install-failed.logThe
/l*vflag does not affect installer behavior — it was added solely for diagnostics.
Expected Behavior
The installer should detect that the supplied service account cannot be resolved before attempting service creation, and present a clear, actionable message such as:
"The service account 'nonexistent-domain\psu_service' could not be found. Please verify the account name and try again."
The user should be returned to the setup dialog without a full rollback.
Actual Behavior
- Installation proceeds through all file copy and custom actions successfully.
- At the
InstallServicesaction,CreateServiceis called withStartName=nonexistent-domain\psu_service. - The SCM rejects the account and returns a failure.
- Windows Installer wraps this as Error 1923 with a misleading privileges message.
- A full rollback is triggered, removing all previously copied files.
- Exit code:
1603
Relevant log extract:
Executing op: ServiceInstall(Name=PowerShellUniversal, ..., StartName=contoso\psu_service, ...)
Error 1923. Service 'PowerShell Universal' (PowerShellUniversal) could not be installed.
Verify that you have sufficient privileges to install system services.
Action ended: InstallFinalize. Return value 3.
MainEngineThread is returning 1603
Impact
- The misleading message causes users and IT admins to investigate elevation/UAC issues that are not present.
- The full rollback means all installer progress is lost; the user must re-run from scratch after fixing the account.
- Silent installs (
/qn) in enterprise/pipeline deployments produce only the cryptic 1923 in the MSI log with no indication that the account name is wrong.
Suggested Fix
Option A — Improve the Error 1923 message (low effort)
Override row 1923 in the MSI Error table with a more accurate message that mentions account validity as a possible cause alongside privileges.
Option B — Pre-flight validation CA in InstallUISequence (recommended for interactive installs)
Add an immediate C# DTF custom action scheduled just before ExecuteAction that calls:
new NTAccount(serviceAccount).Translate(typeof(SecurityIdentifier));If IdentityNotMappedException is thrown, surface a clear error and return the user to the dialog with no rollback required.
Option C — Deferred validation CA in InstallExecuteSequence (recommended for silent/enterprise installs)
Add a deferred C# DTF custom action immediately before InstallServices in InstallExecuteSequence, performing the same NTAccount.Translate() check. This fires regardless of UI level (/qn, SCCM, Intune) and produces a named, descriptive failure in the MSI log.
⚠️ Exact sequence numbers forInstallServicesand the correct dialog/control name for Option B wiring are pending confirmation from the MSI database (Orca). Will update before final submission.
Production recommendation: ship Options B + C together.
Attachments
install-failed.log— verbose MSI log of the failing installinstall-succeed.log— verbose MSI log of a successful install using a valid service account
Environment
- OS: Windows Server (64-bit)
- Machine role: Domain Controller (
WIN-DC-01) — relevant because DC security policy and Group Policy may impose additional constraints on service account rights vs. a standard member server - Install path:
C:\Program Files (x86)\Universal\— this is a 32-bit MSI running on a 64-bit OS, which is expected; noted here in case it is relevant to path handling - Install context: elevated (SYSTEM via msiexec service),
Privileged = 1,MsiRunningElevated = 1confirmed in log - Domain environment: yes
- Failed run service account:
contoso\psu_service(account does not exist) - Successful run service account:
contoso3\psu_service(valid account, install succeeds) - Both runs used the same MSI, same machine, same install options
Version
26.1.3
Severity
Low
Hosting Method
MSI (Windows Service)
Operating System
Windows
Database
SQLite
Licensed
Yes
Features
No response
Additional Environment data
No response
Screenshots/Animations
