com4 :Extension

Fournit des fonctionnalités permettant d’exposer les inscriptions COM aux clients en dehors du package d’application. L’extension com4 est une nouvelle version qui est un sur-ensemble et un remplacement pour les versions de schéma COM précédentes. Pour plus d'informations, consultez la section Notes.

Hiérarchie d’éléments

<Paquet>

    <Applications>

         <Application>

              <Extensions>

                   <com4 :Extension>

Syntaxe

<com4:Extension
  Category = 'A string that can have one of the following values: "windows.comServer" or "windows.comInterface".'
  Executable = 'An optional string with a value between 1 and 256 characters in length that must end with ".exe" and cannot contain these characters: <, >, :, ", |, ?, or *.'
  EntryPoint = 'An optional string with a value between 1 and 256 characters in length that cannot start or end with a whitespace character.'
  RuntimeType = 'An optional string with a value between 1 and 255 characters in length that cannot start or end with a period or contain these characters: <, >, :, ", /, \, |, ?, or *.'
  StartPage = 'An optional string with a value between 1 and 256 characters in length that cannot contain these characters: <, >, :, ", |, ?, or *.'
  ResourceGroup = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  TrustLevel = 'An optional string the can have one of the following values: "appContainer" or "mediumIL".'
  RuntimeBehavior = 'An optional string the can have one of the following values: "windowsApp", "packagedClassicApp", or "win32App".'
  HostId = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  Parameters = 'An optional string with a value between 1 and 32767 characters in length with a non-whitespace character at its beginning and end.'
  uap11:Id = 'An optional string with a value between 1 and 255 characters in length with a non-whitespace character at its beginning and end.'
  uap11:Subsystem = 'An optional string that can have one of the following values: "console" or "windows".'
  uap11:SupportsMultipleInstances = 'An optional boolean value.'
  uap11:ResourceGroup = 'An optional alphanumeric string with a value between 1 and 255 characters in length. Must begin with a letter.'
  uap11:CurrentDirectoryPath = 'An optional string that cannot contain these characters: <, >, |, ?, or *. >'
  uap11:Parameters = 'An optional string with a value between 1 and 32767 characters in length with a non-whitespace character at its beginning and end.'
  desktop7:CompatMode = 'An optional string the can have one of the following values: "classic" or "modern".'
  desktop7:Scope = 'An optional string that can have one of the following values: "machine" or "user".' />

  <!-- Child elements -->
  com4:ComServer
  com4:ComInterface

</com4:Extension>

Attributs et éléments

Attributs

Attribut Description Type de données Obligatoire Valeur par défaut
Catégorie Type de point d’extensibilité d’application. Chaîne qui peut avoir l’une des valeurs suivantes : windows.comServer ou windows.comInterface. Yes
Exécutable Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative avec une valeur comprise entre 1 et 256 caractères qui doit se terminer .exe par et ne peut pas contenir les caractères suivants : <, >, ":, |, ?, ou *. No
EntryPoint Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative avec une valeur comprise entre 1 et 256 caractères qui ne peut pas commencer ou se terminer par un caractère d’espace blanc. No
RuntimeType Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative avec une valeur comprise entre 1 et 255 caractères qui ne peut pas commencer ou se terminer par un point ou contenir les caractères suivants : <, >, :, /"|\, ?ou .* No
StartPage Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative dont la valeur est comprise entre 1 et 256 caractères et qui ne peut pas contenir les caractères suivants : <, >, :, ", |, ?ou *. No
ResourceGroup Balise que vous pouvez utiliser pour regrouper les activations d’extensions à des fins de gestion des ressources (par exemple, processeur et mémoire). La valeur que vous pouvez définir ResourceGroup est de forme libre et flexible. Voir Application@ResourceGroup. Chaîne alphanumérique facultative avec une valeur comprise entre 1 et 255 caractères. Doit commencer par une lettre. No
uap10 :TrustLevel Spécifie le niveau d’approbation de l’extension. Dans la version actuelle, cet attribut n’est pas pris en charge pour l’extension com4. La valeur « mediumIL » est toujours utilisée. Une chaîne facultative peut avoir l’une des valeurs suivantes : appContainer ou mediumIL. No
uap10 :RuntimeBehavior Spécifie le comportement au moment de l’exécution de l’extension. Dans la version actuelle, cet attribut n’est pas pris en charge pour l’extension com4. La valeur « empaquetéClassicApp » est toujours utilisée. Chaîne facultative pouvant avoir l’une des valeurs suivantes : windowsApp, empaquetéClassicApp ou win32App. No
uap10 :HostId Cette valeur spécifie l’ID du runtime hôte pour l’extension. Chaîne alphanumérique facultative avec une valeur comprise entre 1 et 255 caractères. Doit commencer par une lettre. No
uap10 :Parameters Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative avec une valeur comprise entre 1 et 32767 caractères avec un caractère non-espace blanc au début et à la fin. No
uap11 :Id Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative avec une valeur comprise entre 1 et 255 caractères, avec un caractère non-espace blanc au début et à la fin. No
uap11 :Sous-système Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative qui peut avoir l’une des valeurs suivantes : console ou windows. No
uap11 :SupportsMultipleInstances Spécifie si les instances doivent s’exécuter dans différents processus. La valeur par défaut est false. Valeur booléenne facultative. No
uap11 :ResourceGroup Balise que vous pouvez utiliser pour regrouper les activations d’extensions à des fins de gestion des ressources (par exemple, processeur et mémoire). La valeur que vous pouvez définir ResourceGroup est de forme libre et flexible. Voir Application@ResourceGroup. Chaîne alphanumérique facultative avec une valeur comprise entre 1 et 255 caractères. Doit commencer par une lettre. No
uap11 :CurrentDirectoryPath Cet attribut est hérité de la syntaxe de l’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative qui ne peut pas contenir les caractères suivants : <, >, |, ?ou *. > No
uap11 :Parameters Cet attribut est hérité de la syntaxe d’extension de base et n’est pas applicable à l’extension com4. Outre la validation syntaxique, cette valeur est ignorée. Chaîne facultative dont la valeur est comprise entre 1 et 32767 caractères, avec un caractère sans espace blanc au début et à la fin. No
desktop7 :CompatMode Spécifie si les informations de cette extension sont inscrites auprès de Windows de manière classique (par exemple, les applications non empaquetées inscrivent des types auprès de COM via le registre) ou de nouvelles façons plus étendues. La valeur par défaut est « modern ». CompatMode="classic » nécessite la fonctionnalité Microsoft.classicAppCompat_8wekyb3d8bbwe . Chaîne facultative pouvant avoir l’une des valeurs suivantes : classique ou moderne. No
desktop7 :Scope Spécifie si les inscriptions ne sont visibles que par les autres applications exécutées en tant qu’utilisateur ayant inscrit ce package (utilisateur), ou si elles sont visibles par tous les utilisateurs et services sur la machine (machine). La valeur par défaut est « user ». Scope="machine » nécessite la fonctionnalité Microsoft.classicAppCompatElevated_8wekyb3d8bbwe . Chaîne facultative qui peut avoir l’une des valeurs suivantes : machine ou utilisateur. No

Éléments enfants

Élément enfant Description
com4 :ComServer L’extension comServer peut inclure des inscriptions de classes, notamment des détails d’activation pour les serveurs qui implémentent ces classes, ainsi que des inscriptions ProgId et TreatAsClass, qui fournissent des identificateurs supplémentaires utilisés pour référencer ces classes au moment de l’exécution.
com4 :ComInterface Déclare un point d’extension de package de type windows.comInterface (com4 :ComInterface).

Éléments parents

Élément enfant Description
Extensions Définit un ou plusieurs points d’extensibilité pour l’application.

Remarques

L’extension com4 est essentiellement une réécriture de l’ancienne syntaxe de l’extension windows.comServer/windows.comInterface. Cette extension est un sur-ensemble de la fonctionnalité d’extension com précédente, avec un comportement identique pour la syntaxe héritée. La validation du manifeste pour la nouvelle syntaxe utilisée dans l’empaquetage est mieux alignée sur les exigences sémantiques de l’extension.

  • Dans la version précédente, chaque extension était traitée comme un document distinct, ce qui permettait de valider des clés non uniques et des références non uniques.
  • Dans la version précédente, la duplication d’attributs soumis à des contraintes uniques/clés n’était interceptée par la validation du manifeste que si les attributs dupliqués apparaissent dans le même instance de l’extension. Les packages qui dupliquaient ces attributs ne pourraient pas être déployés, avec des informations de diagnostic limitées pour identifier le problème.
  • Dans la version précédente, un élément keyref dont le référentiel se trouve dans un autre instance de l’extension était bloqué par la validation du manifeste, qui est une restriction artificielle par rapport à ce que le comportement de déploiement/runtime prend en charge.

Les applications ciblant Windows 11 qui peuvent utiliser le nouvel espace de noms com4 pour toutes leurs extensions windows.comServer/windows.comInterface doivent l’utiliser. Mélanger le nouvel espace de noms avec les anciens espaces de noms n’est pas recommandé, notamment pour les raisons suivantes :

  • Le déploiement du package sur les versions qui prennent en charge le nouvel espace de noms gère les extensions de tous les espaces de noms, et tous les identificateurs uniques dupliqués entre les extensions utilisant différentes versions d’espace de noms entraînent un échec. L’utilisation des anciens espaces de noms empêche la validation du manifeste de détecter ces erreurs.
  • En raison des limitations des anciens schémas d’espace de noms, un keyref dans l’ancienne syntaxe ne peut pas faire référence à une clé dans la nouvelle syntaxe, car il se trouve dans des instances différentes de l’extension.

L’utilisation de la sémantique de syntaxe com4 suivante présente des exigences de capacité :

  • CompatMode="classic » nécessite Microsoft.classicAppCompat_8wekyb3d8bbwe
  • Scope="machine » nécessite Microsoft.classicAppCompatElevated_8wekyb3d8bbwe

L’exemple suivant montre comment inscrire une implémentation de serveur hors processus et in-process pour la même classe.

Exemples

<com4:Class Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx" DisplayName="CLSID_Foo"/> 
<com:ExeServer Executable="MyServer.exe" DisplayName="My server">  
  <com4:ClassReference Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx"/>  
</com:ExeServer> 
<com4:InProcessServer Path="MyServer.dll">  
  <com4:ClassReference Id="f4ed7720-9b3a-44a4-xxxx-xxxxxxxxxxxx"/>  
</com4:InProcessServer> 

Nouvelles fonctionnalités de l’extension com4

  • Prise en charge des serveurs in-process (à la fois non managés et gérés) et des gestionnaires in-process personnalisés (autrement dit, pas le gestionnaire OLE par défaut). Cette fonctionnalité est actuellement limitée sur le plan fonctionnel et limitée par la stratégie :
    • Il est actuellement destiné à être utilisé uniquement par les packages avec un emplacement externe ; il ne fonctionne pas pour la plupart des packages normaux en raison des listes de contrôle d’accès sur l’emplacement d’installation qui empêchent le chargement des dll du package en dehors du package. Pour plus d’informations sur les packages avec un emplacement externe, consultez Accorder une identité de package en empaquetant avec un emplacement externe.
  • Il est désormais possible d’associer un TypeLib à une inscription de classe.

Configuration requise

Élément Valeur
Espace de noms http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (build 20348)