Edit

Extensions (in Package)

Defines one or more extensibility points for the package.

Element hierarchy

<Package>
   └─ <Extensions>

Syntax

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">
  ...
  <Extensions>

    <!-- Child elements -->
    Extension{0,100000000}
    ExtensionChoice{0,10000}

  </Extensions>
</Package>

Key

{} specific range of occurrences

Attributes

None.

Child elements

Child element Description
Extension Declares an extensibility point for the package.

Parent elements

Parent element Description
Package Defines the root element of an app package manifest. The manifest describes the structure and capabilities of the software to the system.

Requirements

Item Value
Namespace http://schemas.microsoft.com/appx/manifest/foundation/windows10
Minimum OS Version

Remarks

Extensibility points are a mechanism by which an app can add functionality in a manner defined by the operating system. An example of a package extensibility point is the ability to specify a dynamic-link library or executable that contains activatable classes that your code uses.

The Extension elements that can be included under the Package/Extensions element are enforced by the XML schema. Each of these Extension elements have a required Category attribute that specifies one or more extension points that the extension supports. Some extensions support both application and package extension categories. The following table lists the extension categories supported for package extensions and the associated Extension element that supports each category. A category can be supported for multiple extensions as a versioning mechanism.

Extension category Extension
windows.activatableClass.inProcessServer f:Extension
windows.activatableClass.outOfProcessServer f:Extension
windows.activatableClass.proxyStub f:Extension
windows.certificates f:Extension
windows.classicAppCompatKeys rescap4:Extension
windows.comInterface com:Extension, com2:Extension, com4:Extension
windows.comServer com:Extension, com2:Extension, com4:Extension
windows.customDesktopEventLog desktop10:Extension
windows.customInstall desktop6:Extension
windows.dataProtection uap8:Extension
windows.dataShortcuts desktop10:Extension
windows.deploymentExtensionHandler deployment:Extension
windows.deploymentStateHandler deployment3:Extension
windows.desktopEventLogging desktop2:Extension
windows.enterpriseDataProtection uap7:Extension
windows.errorReporting desktop7:Extension
windows.eventTracing desktop8:Extension
windows.firewallRules desktop2:Extension
windows.folder desktop10:Extension
windows.hostRuntime uap10:Extension
windows.installedLocationVirtualization uap10:Extension
windows.loaderSearchPathOverride uap6:Extension
windows.mediaContentDecryptionModule uap10:Extension
windows.mutablePackageDirectories desktop6:Extension, desktop8:Extension
windows.packageExtension uap17:Extension
windows.packageExtensionHost uap17:Extension
windows.packagingExtension deployment3:Extension
windows.primaryInteropAssemblies rescap4:Extension
windows.publisherCacheFolders f:Extension
windows.shadowCopyExcludeFiles desktop7:Extension
windows.sharedFonts uap7:Extension
windows.sipExtension deployment3:Extension
windows.userMutablePackageDirectories desktop8:Extension

Examples

The following example is taken from the package manifest of one of the SDK samples.

<Package>
  <Extensions>
    <Extension Category="windows.activatableClass.proxyStub">
      <ProxyStub ClassId="332fd2f1-1c69-4c91-949e-4bb67a85bdc5">
        <Path>Microsoft.Samples.DllServerAuthoring.Proxies.dll</Path>
        <Interface Name="IToaster" InterfaceId="6a112353-4f87-4460-a908-2944e92686f3" />
        <Interface Name="IToast" InterfaceId="699b1394-3ceb-4a14-ae23-efec518b088b" />
        <Interface Name="IAppliance" InterfaceId="332fd2f1-1c69-4c91-949e-4bb67a85bdc5" />
      </ProxyStub>
    </Extension>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>Microsoft.Samples.DllServerAuthoring.dll</Path>
        <ActivatableClass ActivatableClassId="Microsoft.Samples.DllServerAuthoring.Toaster" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
  </Extensions>
</Package>