What does Windows error code 14108 (ERROR_SMI_PRIMITIVE_INSTALLER_FAILED) mean?

 
Previous Next
ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE ERROR_GENERIC_COMMAND_FAILED

ERROR_SMI_PRIMITIVE_INSTALLER_FAILED

The SMI primitive installer failed during setup or servicing.

ERROR_SMI_PRIMITIVE_INSTALLER_FAILED is Windows status 14108 (0x0000371C) associated with a primitive installer operation in the servicing management infrastructure. For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, the system meaning is “The SMI primitive installer failed during setup or servicing.” Preserve the value at the API boundary because subsequent cleanup or logging calls can overwrite the last-error state.

Operational meaning

For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, the key question is whether the primitive operation completes its narrowly defined file, registry, service, or component action. The value describes a primitive installer operation in the servicing management infrastructure; it does not prove that the whole domain, DNS service, network, servicing stack, application package, or operating system has failed.

Likely impact: Manual recreation of the primitive side effect can leave the servicing database inconsistent with the machine. For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, record the scope that was actually tested instead of escalating from one rejected object or phase to a system-wide outage.

Where this result appears

  • ERROR_SMI_PRIMITIVE_INSTALLER_FAILED can appear while processing a primitive installer operation in the servicing management infrastructure.
  • ERROR_SMI_PRIMITIVE_INSTALLER_FAILED can appear while component installation, package servicing, manifest processing, or resource substitution.
  • ERROR_SMI_PRIMITIVE_INSTALLER_FAILED can appear while a setup engine invoking an advanced, primitive, or generic installer step.
  • ERROR_SMI_PRIMITIVE_INSTALLER_FAILED can appear while XML or localized-content parsing before a component can be committed.

Typical causes

  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, the primitive receives invalid package data.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, the target resource is locked or unavailable.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, the operation violates servicing state.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, the underlying file, registry, or service call fails.

Diagnostic sequence

  1. capture ERROR_SMI_PRIMITIVE_INSTALLER_FAILED immediately after the failing or status-returning call and record whether the API uses Win32, DNS_STATUS, HRESULT conversion, or callback semantics.
  2. identify the exact target involved in a primitive installer operation in the servicing management infrastructure, including stable GUIDs, DNs, zone names, package identities, file hashes, policy names, or process identifiers as applicable.
  3. prove the state boundary: the primitive operation completes its narrowly defined file, registry, service, or component action.
  4. collect primitive installer type and target resource before restarting services, deleting objects, rebuilding packages, or changing policy.
  5. correlate first lower-level Win32 or HRESULT with CBS.log, setup logs, servicing stack events, installer stdout/stderr, manifest identity, XML bytes, and the first HRESULT or process exit code.
  6. for ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, determine whether the result is a failure, warning, informational completion, continuation request, or marker constant before choosing retry behavior.
  7. for ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, after changing one responsible condition, repeat the same smallest operation and verify both success and absence of unintended partial effects.

Evidence to preserve

  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, collect primitive installer type.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, collect target resource.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, collect first lower-level Win32 or HRESULT.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, collect CBS and setup log section.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, collect transaction rollback state.

For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, correlate this evidence with CBS.log, setup logs, servicing stack events, installer stdout/stderr, manifest identity, XML bytes, and the first HRESULT or process exit code. Preserve raw identifiers and the first detailed diagnostic: translating everything to 14108 can hide whether the cause was validation, topology, authorization, replication, policy, file I/O, packaging, or an intentional continuation state.

Recovery and retry

The recovery objective for ERROR_SMI_PRIMITIVE_INSTALLER_FAILED is to repair the underlying target or package data and rerun through servicing so transaction ownership is preserved.

For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, retry only after the recorded boundary changes and prior completion is known. Read-only discovery for ERROR_SMI_PRIMITIVE_INSTALLER_FAILED can usually be repeated with bounded backoff; directory mutations, DNS updates, policy installation, servicing actions, and PRI writes require a state check first. Backoff for ERROR_SMI_PRIMITIVE_INSTALLER_FAILED cannot repair malformed input, unsupported structure, identity collision, missing authority, or incompatible package metadata.

Telemetry and support fields

  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, record smi_primitive_installer_failed_operation — producing API, command, callback, or servicing phase.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, record smi_primitive_installer_failed_target — stable object, zone, policy, package, file, or account identity.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, record smi_primitive_installer_failed_state_before and smi_primitive_installer_failed_requested_state.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, record smi_primitive_installer_failed_first_status — earliest component-specific code before translation.
  • For ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, record smi_primitive_installer_failed_server, smi_primitive_installer_failed_process, UTC timestamp, and correlation ID.

A support bundle for ERROR_SMI_PRIMITIVE_INSTALLER_FAILED should include decimal 14108, hexadecimal 0x0000371C, the smallest reproducible request, target identity, effective configuration, and evidence from the owning Windows component. When documenting ERROR_SMI_PRIMITIVE_INSTALLER_FAILED, remove secrets from exported logs but keep SIDs, GUIDs, package-family names, record types, and hashes when they are needed to distinguish objects.

Difference from nearby results

ERROR_ADVANCED_INSTALLER_FAILED reports an advanced installer; this code names the lower-level primitive installer This distinction determines whether the correct next step is input correction, topology repair, continuation, policy review, package rebuild, or no error handling at all.

Practical validation scenario

A primitive registry operation fails on a protected key during package apply. CBS logs identify the exact target and access status for correction. A negative test should reproduce ERROR_SMI_PRIMITIVE_INSTALLER_FAILED with the responsible condition preserved; the recovery test should alter only that condition and confirm the intended final state.

Developer and administrator guidance

Developers should model ERROR_SMI_PRIMITIVE_INSTALLER_FAILED explicitly in the result domain instead of collapsing every nonzero value into “failed.” Administrators should capture evidence before destructive remediation and use the component that owns a primitive installer operation in the servicing management infrastructure. Monitoring for ERROR_SMI_PRIMITIVE_INSTALLER_FAILED should suppress range markers and classify warning, informational, cancellation, and continuation values separately from terminal failures.

References


Looking for a different code? Search another status or error code.