uap:Extension (Windows 10)

Declares an extensibility point for the app.

Element hierarchy

<Package>
<Applications>
<Application>
<Extensions>
<uap:Extension>

Syntax

<Extension Category       = "windows.fileTypeAssociation" | "windows.protocol" | "windows.autoPlayContent" | "windows.autoPlayDevice" | "windows.shareTarget" | ...
               Executable?    = A string between 1 and 256 characters in length that must end with ".exe" and cannot contain these characters: <, >, :, ", |, ?, or *. It specifies the default executable for the extension. If not specified, the executable defined for the app is used.  If specified, the EntryPoint property is also used. If that EntryPoint property isn't specified, the EntryPoint defined for the app is used.
               EntryPoint?    = A string between 1 and 256 characters in length, representing the  task handling the extension. This is normally the fully namespace-qualified name of a Windows Runtime type.
If EntryPoint is not specified, the EntryPoint defined for the app is used instead.

               RuntimeType?   = A string between 1 and 255 characters in length that cannot start or end with a period or contain these characters: <, >, :, ", /, \, |, ?, or *.
               StartPage?     = A string between 1 and 256 characters in length that cannot contain these characters: <, >, :, ", |, ?, or *.
               ResourceGroup? = An alphanumeric string between 1 and 255 characters in length. Must begin with an alphabetic character. >

  <!-- Child elements -->
  ( uap:FileTypeAssociation
  | uap:Protocol
  | uap:AutoPlayContent
  | uap:AutoPlayDevice
  | uap:ShareTarget
  | uap:FileOpenPicker
  | uap:FileSavePicker
  | uap:AppointmentsProvider
  | uap:WebAccountProvider
  | uap:DialProtocol
  | uap:AppService
  | uap:MediaPlayback
  | uap:VoipCall
  )?

</uap:Extension>

Key

? optional (zero or one)

Attributes and Elements

Attributes

Attribute Description Data type Required Default value
Category

The type of app extensibility point.

This attribute can have one of the following values:

  • windows.fileTypeAssociation
  • windows.protocol
  • windows.autoPlayContent
  • windows.autoPlayDevice
  • windows.shareTarget
  • windows.search
  • windows.fileOpenPicker
  • windows.fileSavePicker
  • windows.cachedFileUpdater
  • windows.cameraSettings
  • windows.accountPictureProvider
  • windows.printTaskSettings
  • windows.lockScreenCall
  • windows.appointmentsProvider
  • windows.alarm
  • windows.webAccountProvider
  • windows.dialProtocol
  • windows.appService
  • windows.mediaPlayback
  • windows.print3DWorkflow
  • windows.lockScreen
  • windows.aboveLockScreen
  • windows.personalAssistantLaunch
  • windows.voipCall
Yes
EntryPoint

The activatable class ID.

A string between 1 and 256 characters in length, representing the task handling the extension. This is normally the fully namespace-qualified name of a Windows Runtime type. If EntryPoint is not specified, the EntryPoint defined for the app is used instead. No
Executable

The default launch executable.

A string between 1 and 256 characters in length that must end with ".exe" and cannot contain these characters: <, >, :, ", |, ?, or *. It specifies the default executable for the extension. If not specified, the executable defined for the app is used. If specified, the EntryPoint property is also used. If that EntryPoint property isn't specified, the EntryPoint defined for the app is used. No
ResourceGroup

A tag that you can use to group extension activations together for resource management purposes (for example, CPU and memory). The value you can set ResourceGroup is free-form and flexible. See Application@ResourceGroup and Remarks.

An alphanumeric string between 1 and 255 characters in length. Must begin with an alphabetic character. No
RuntimeType

The runtime provider. This attribute is used typically when there are mixed frameworks in an app.

A string between 1 and 255 characters in length that cannot start or end with a period or contain these characters: <, >, :, ", /, , |, ?, or *. No
StartPage

The web page that handles the extensibility point.

A string between 1 and 256 characters in length that cannot contain these characters: <, >, :, ", |, ?, or *. No

Child Elements

Child Element Description
uap:AppService

Declares an app extensibility point of type windows.appService. Application Contracts are a way for an app to invoke a background task belonging to another app; or for a background task invoked to service an app contract a way to communicate with its caller.

uap:AppointmentsProvider

Declares an app extensibility point of type windows.appointmentsProvider.

uap:AutoPlayContent

Declares an app extensibility point of type windows.autoPlayContent. The app provides the specified AutoPlay content actions.

uap:AutoPlayDevice

Declares an app extensibility point of type windows.autoPlayDevice. The app provides the specified AutoPlay device actions.

uap:DialProtocol

Declares an app extensibility point of type windows.dialProtocol.

uap:FileOpenPicker

Declares an app extensibility point of type windows.fileOpenPicker. The app lets the user choose and open the specified types of files.

uap:FileSavePicker

Declares an app extensibility point of type windows.fileSavePicker. The app lets the user choose the file name, extension, and storage location for the specified types of files.

uap:FileTypeAssociation

Declares an app extensibility point of type windows.fileTypeAssociation. A file type association indicates that the app is registered to handle files of the specified types.

uap:MediaPlayback

Declares an app extensibility point of type mediaPlayback so that your app can declare that it performs video transcoding.

uap:Protocol

Declares an app extensibility point of type windows.protocol. A URI association indicates that the app is registered to handle URIs with the specified scheme.

uap:ShareTarget

Declares an app extension point of type windows.shareTarget. The app can share the specified types of files.

uap:VoipCall

Declares an app extensibility point of type voipCall so that your app can declare that it can perform an upgrade from a cellular call to a VoIP video call, and/or whether it is a VoIP app that supports dialing phone numbers directly.

uap:WebAccountProvider

Declares an app extensibility point of type windows.webAccountProvider.

Parent Elements

Parent Element Description
Extensions (type: CT_ApplicationExtensions)

Defines one or more extensibility points for the app.

Remarks

For most types of extensions, Extension@ResourceGroup must match Application@ResourceGroup (if Application@ResourceGroup is omitted then Extension@ResourceGroup should be omitted also).

For a UI-based contract: if Extension@ResourceGroup is not specified then it will be implicitly grouped with the Application; if Extension@ResourceGroup does not match Application@ResourceGroup then the manifest will fail schema validation.

If Extension@ResourceGroup is not specified for a background task, or for a contract that is based on a background task, it will be associated with a default group for all background tasks. Background task contracts are allowed to specify the same values as Application@ResourceGroup.

For the following Extensions, Extension@ResourceGroup allows the background task that is run to be grouped into different processes which will be resource- and lifecycle-managed independently of other groups: windows.backgroundTasks, windows.appServices, windows.preinstalledConfigTask, and windows.updateTask.

For example, if the manifest had these three entries.

        <Extension Category="windows.backgroundTasks" EntryPoint="Fabrikam.BackgroundTask" ResourceGroup="Group1">
          <BackgroundTasks>
            <Task Type="timer"/>
          </BackgroundTasks>
        </Extension>
        <Extension Category="windows.backgroundTasks" EntryPoint="Fabrikam.BackgroundTask2" ResourceGroup="Group2">
          <BackgroundTasks>
            <Task Type="controlChannel"/>
          </BackgroundTasks>
        </Extension>
        <Extension Category="windows.backgroundTasks" EntryPoint="Fabrikam.BackgroundTask3" ResourceGroup="Group2">
          <BackgroundTasks>
            <Task Type="pushNotification"/>
          </BackgroundTasks>
        </Extension>

Then the last two background tasks would be activated into the same instance of backgroundtaskhost.exe if they were activated concurrently. However, a separate instance of backgroundtaskhost.exe would be spun up for the first entry because it has a different ResourceGroup.

If no ResourceGroup is specified for an extension then all background tasks are activated into the same instance of backgroundtaskhost.exe.

Additionally if one of these extensions(windows.backgroundTasks, windows.appServices, windows.preinstalledConfigTask, windows.updateTask) specifies the same value of the ResourceGroup attribute of the parent Application element they will be activated in the same process as the UI.

Requirements

Namespace

http://schemas.microsoft.com/appx/manifest/uap/windows10