What does HRESULT 0x80220011 (WCM_E_SUBSTITUTIONNOTFOUND) mean?

 
Previous Next
WCM_E_EXPRESSIONNOTFOUND WCM_E_USERALREADYREGISTERED

WCM_E_SUBSTITUTIONNOTFOUND

The Windows SDK describes the condition as “Substitution is not defined.”

Interpretation without overreach

A named substitution cannot be resolved. The operation reached manifest expansion where a placeholder or reusable substitution must be bound before validation. The first branch to test is whether the substitution table was not included in the source package; keep that separate from the possibility that a placeholder name changed without updating consumers.

SMI object or metadata state

At this boundary, capture the unresolved substitution name and source location, then correlate it with all substitution declarations visible in the compilation scope. Assign ownership only after checking package/merge order and conditional preprocessing output.

Common origins

  • the substitution table was not included in the source package
  • a placeholder name changed without updating consumers
  • scope rules place the definition outside the requesting metadata unit
  • a build-time variable was expected but the tool emitted an unresolved SMI substitution

Useful artifacts

  • the unresolved substitution name and source location
  • all substitution declarations visible in the compilation scope
  • package/merge order and conditional preprocessing output
  • target architecture or language branches that select different substitutions
  • the final manifest passed to SMI rather than the template source alone

How to isolate the defect

  • supply the missing definition in the correct scope
  • remove stale placeholder usage from generated metadata
  • make architecture/language branches produce complete substitution sets
  • Validate the expanded manifest as an artifact
  • Add packaging tests that reject unresolved substitutions

When another attempt is justified

Retry after definition or scope correction. Supplying a setting value does not replace missing manifest substitution metadata.

Related result codes

WCM_E_EXPRESSIONNOTFOUND concerns an executable/conditional expression symbol; SUBSTITUTIONNOTFOUND concerns an expansion binding.

Example from an offline image

An architecture-specific package defines a path substitution only for x64, but the neutral manifest references it for all targets. The x86 compile cannot resolve the placeholder.

Official Microsoft references.


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