MicrosoftDocs / winrt-related

WinRT related reference content for developing Microsoft Universal Windows Platform (UWP) apps
Creative Commons Attribution 4.0 International
77 stars 89 forks source link

Desktop10 missing from this page. #328

Closed TimMangan closed 1 year ago

TimMangan commented 1 year ago

Add reference to the new Desktop10 extension.


Document Details

Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

drewbatgit commented 1 year ago

@TimMangan - I went down the rabbit hole on this issue and have two thoughts about this page:

  1. The elements listed on this page aren't really "child" elements defined in the schema. Rather, the SubstitutionGroup attribute allows elements to be placed inside an Extension element. Some Extensions are defined as ApplicationExtensionChoice, which means they are only application extensions, but other extensions are defined as ExtensionChoice and have both application and package extensions.
  2. The real validation of which elements are "allowed" under Package or Application is done in code, and is evaluated based on the category attribute.

As part of this investigation, I was pointed to the source code that defines which categories are considered to be application vs. package extensions. I think this information is more valuable that a list of "child" elements that include both kinds of extension categories. I was able to parse the source code and generate a table of categories supported as application extensions. I'm proposing replacing the Child element section with a table in the remarks section of this page. Here is what that table would look like. As a frequent user of these docs, I am interested in your opinion of my proposed change to this page. Theoretically, I would go and make a similar table for the package extension page as well.

Remarks The following extension categories are valid application extensions.

Extension category Extension
windows.backgroundTasks Extension
windows.preInstalledConfigTask Extension
windows.updateTask Extension
windows.restrictedLaunch Extension
windows.cloudFiles cloudFiles:Extension
windows.comServer com:Extension
windows.comInterface com:Extension
windows.comServer com2:Extension
windows.comInterface com2:Extension
windows.comServer com4:Extension
windows.comInterface com4:Extension
windows.fullTrustProcess desktop:Extension
windows.startupTask desktop:Extension
windows.toastNotificationActivation desktop:Extension
windows.searchProtocolHandler desktop:Extension
windows.appPrinter desktop2:Extension
windows.searchFilterHandler desktop2:Extension
windows.searchPropertyHandler desktop2:Extension
windows.mailProvider desktop2:Extension
windows.autoPlayHandler desktop3:Extension
windows.cloudFiles desktop3:Extension
windows.fileExplorerContextMenus desktop4:Extension
windows.service desktop6:Extension
windows.approvedShellExtension desktop7:Extension
windows.controlPanelItem desktop7:Extension
windows.service desktop7:Extension
windows.mailProvider desktop7:Extension
windows.shortcut desktop7:Extension
windows.applicationRegistration desktop7:Extension
windows.desktopAppMigration desktop7:Extension
windows.systemFileAssociation desktop7:Extension
windows.shadowCopyExcludeFiles desktop7:Extension
windows.shadowCopyExcludeFiles desktop7:Extension
windows.fileExplorerClassicContextMenuHandler desktop9:Extension
windows.fileExplorerClassicDragDropContextMenuHandler desktop9:Extension
windows.activatableClass.outOfProcessServer Extension
windows.comInterface Extension
windows.aowApp mobile:Extension
windows.mobileMultiScreenProperties mobile:Extension
windows.communicationBlockingProvider mobile:Extension
windows.phoneCallOriginProvider mobile:Extension
windows.printSupportSettingsUI printSupport:Extension
windows.printSupportExtension printSupport:Extension
windows.printSupportJobUI printSupport:Extension
windows.settingsApp rescap:Extension
windows.desktopAppMigration rescap3:Extension
windows.lockScreenComponent rescap3:Extension
windows.fileTypeAssociation uap:Extension
windows.protocol uap:Extension
windows.autoPlayContent uap:Extension
windows.autoPlayDevice uap:Extension
windows.shareTarget uap:Extension
windows.search uap:Extension
windows.fileOpenPicker uap:Extension
windows.fileSavePicker uap:Extension
windows.cachedFileUpdater uap:Extension
windows.cameraSettings uap:Extension
windows.accountPictureProvider uap:Extension
windows.printTaskSettings uap:Extension
windows.lockScreenCall uap:Extension
windows.appointmentsProvider uap:Extension
windows.alarm uap:Extension
windows.webAccountProvider uap:Extension
windows.dialProtocol uap:Extension
windows.appService uap:Extension
windows.mediaPlayback uap:Extension
windows.print3DWorkflow uap:Extension
windows.lockScreen uap:Extension
windows.aboveLockScreen uap:Extension
windows.personalAssistantLaunch uap:Extension
windows.voipCall uap:Extension
windows.protocol uap10:Extension
windows.printSupportSettingsUI uap12:Extension
windows.printSupportExtension uap12:Extension
windows.printSupportJobUI uap12:Extension
windows.phoneCallActivation uap13:Extension
windows.webAccountProvider uap2:Extension
windows.appointmentDataProvider uap3:Extension
windows.emailDataProvider uap3:Extension
windows.contactDataProvider uap3:Extension
windows.appUriHandler uap3:Extension
windows.appExtensionHost uap3:Extension
windows.appExtension uap3:Extension
windows.protocol uap3:Extension
windows.fileTypeAssociation uap3:Extension
windows.sharedFonts uap4:Extension
windows.userDataTaskDataProvider uap4:Extension
windows.mediaCodec uap4:Extension
windows.contactPanel uap4:Extension
windows.loopbackAccessRules uap4:Extension
windows.devicePortalProvider uap4:Extension
windows.printWorkflowBackgroundTask uap4:Extension
windows.printWorkflowForegroundTask uap4:Extension
windows.userActivity uap5:Extension
windows.mediaSource uap5:Extension
windows.videoRendererEffect uap5:Extension
windows.activatableClass.outOfProcessServer uap5:Extension
windows.startupTask uap5:Extension
windows.appExecutionAlias uap5:Extension
windows.barcodeScannerProvider uap6:Extension
windows.barcodeScannerPreviewProvider uap6:Extension
windows.localExperiencePack uap6:Extension
windows.sharedFonts uap7:Extension
TimMangan commented 1 year ago

YEAH!!!!! Figuring out which ones are package and which are application extensions has so far been an act of trying to find a copy of the schema file and looking for possible comments, and trial and error in creating/testing packages. A clear table depicting this in the documentation is well needed.

drewbatgit commented 1 year ago

Ok, great. I'll go ahead and remove the child elements and add this table instead to the remarks instead. I'll add creating a version of this for Package/Extensions to my to-do list.

drewbatgit commented 1 year ago

I've completed this update. I didn't feel brave enough to delete the child elements list, so I updated it instead. I'll see what kind of response this update gets and then revisit whether it makes sense to leave those there.

TimMangan commented 1 year ago

I view it as appropriate. The reader wants to know what to put in an XML file. You wouldn't remove the framework Extension as a child element, so someone reading this knows exactly what can be placed as a child of Extensions, even if the others are technically a substitution group in the schema sets.