What does HRESULT 0x80270255 (E_MULTIPLE_EXTENSIONS_FOR_APPLICATION) mean?

 
Previous Next
E_APPLICATION_NOT_REGISTERED E_MULTIPLE_PACKAGES_FOR_FAMILY

E_MULTIPLE_EXTENSIONS_FOR_APPLICATION

More than one app extension matches the requested activation contract

E_MULTIPLE_EXTENSIONS_FOR_APPLICATION is HRESULT 0x80270255 (signed decimal -2144927147, unsigned decimal 2150040149). It is a FACILITY_SHELL failure with code field 0x0255. AllStat keeps the SDK wording, including its original typo: “This app has mulitple extensions registered to support the specified contract. Activation by AppUserModelId is ambiguous.”

The ambiguity is inside one application registration

Windows resolved the AppUserModelID, but the manifest exposes multiple extension declarations that can satisfy the contract requested through that identity. Activation by AppUserModelID alone no longer selects a unique target. This is not the same as several installed applications competing to be the user’s default handler; the HRESULT concerns the declarations associated with the application being activated.

Manifest extensions define file, protocol, app-service, and other activation points. Their category, executable, entry point, parameters, and resource grouping establish the dispatch target. Duplicate or overlapping declarations can be schema-valid yet unsuitable for an API that expects one unambiguous extension.

How ambiguity is introduced

  • A manifest generator emits the same contract extension twice for one Application element.
  • Migration adds a new extension but leaves a legacy declaration active.
  • Two declarations overlap on the same file/protocol contract while differing only in parameters or entry point.
  • An optional-package or build-flavor merge produces duplicate extension metadata.
  • The caller uses generic AppUserModelID activation for a contract that requires a more specific selection mechanism.

Evidence to inspect

  • Deployed manifest, not just the source manifest, because packaging can transform tokens and merge generated declarations.
  • The Application ID corresponding to the AppUserModelID and every child extension matching the requested category.
  • Executable, entry point, resource group, supported file type, protocol name, and parameters for each candidate.
  • Package version and installation source so stale and current registrations are not compared as one manifest.
  • The exact activation method and requested contract from the caller.

Diagnostic sequence

  • Map the AppUserModelID to one deployed application entry.
  • Enumerate only extension declarations relevant to the failed contract.
  • Determine whether the product intended multiple capabilities or accidentally duplicated a single capability.
  • If multiple capabilities are legitimate, use a contract-specific API or identifier that selects the intended target rather than assuming the broker will choose.
  • Rebuild and redeploy the corrected manifest, then verify registration for the affected user before retesting.

Retry and recovery

The result is deterministic while the ambiguous registration remains. Retrying or delaying activation cannot choose between equivalent declarations. Recovery requires removing the duplicate/overlap or changing the caller to provide the specificity supported by the contract. Preserve old package versions during staged rollout analysis, because ambiguity can be introduced only in one build flavor.

Nearby HRESULT distinctions

E_APPLICATION_NOT_REGISTERED means no suitable registration was found. E_MULTIPLE_PACKAGES_FOR_FAMILY finds too many installed packages at family resolution. This code finds the app but cannot select a single extension within its registration.

Practical scenario

A package build script adds two windows.protocol declarations for the same scheme under one application, each pointing at a different entry point. A test tool activates only by AppUserModelID and receives E_MULTIPLE_EXTENSIONS_FOR_APPLICATION. The fix is to make protocol ownership unambiguous or invoke the intended protocol contract with its explicit URI.

Official Microsoft references


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