Freigeben über


com4:Extension

Stellt Funktionen bereit, um COM-Registrierungen für Clients außerhalb des App-Pakets verfügbar zu machen. Die Com4-Erweiterung ist eine neue Version, die eine Obermenge von und Ersatz für die vorherigen COM-Schemaversionen ist. Weitere Informationen finden Sie im Abschnitt "Hinweise".

Elementhierarchie

<-Paket->

     <Anwendungen>

          <Application>

               <Erweiterungen>

                    <com4:Extension>

     <Erweiterungen>

          <com4:Extension>

Syntax

<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>

Attribute und Elemente

Attribute

Attribut Beschreibung Datentyp Erforderlich Standardwert
Kategorie- Der Typ des App-Erweiterbarkeitspunkts. Eine Zeichenfolge, die einen der folgenden Werte aufweisen kann: windows.comServer oder windows.comInterface. Ja
ausführbare Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 256 Zeichen, die mit .exe enden muss und diese Zeichen nicht enthalten darf: <, >, :, ", |, ?oder *. Nein
EntryPoint- Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 256 Zeichen länge, die nicht mit einem Leerzeichen beginnen oder enden kann. Nein
RuntimeType- Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen, die nicht mit einem Punkt beginnen oder enden können oder diese Zeichen enthalten können: <, >, :, ", /, \, |, ?oder *. Nein
StartPage- Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 256 Zeichen, die diese Zeichen nicht enthalten können: <, >, :, ", |, ?oder *. Nein
ResourceGroup- Ein Tag, mit dem Sie Erweiterungsaktivierungen für Ressourcenverwaltungszwecke (z. B. CPU und Arbeitsspeicher) gruppieren können. Der Wert, den Sie resourceGroup festlegen können, ist formfrei und flexibel. Siehe Application@ResourceGroup. Eine optionale alphanumerische Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen länge. Muss mit einem Buchstaben beginnen. Nein
uap10:TrustLevel Gibt die Vertrauensstufe der Erweiterung an. In der aktuellen Version wird dieses Attribut für die com4-Erweiterung nicht unterstützt. Der Wert "mediumIL" wird immer verwendet. Eine optionale Zeichenfolge, die einen der folgenden Werte aufweisen kann: appContainer- oder mediumIL-. Nein
uap10:RuntimeBehavior Gibt das Laufzeitverhalten der Erweiterung an. In der aktuellen Version wird dieses Attribut für die com4-Erweiterung nicht unterstützt. Der Wert "packagedClassicApp" wird immer verwendet. Eine optionale Zeichenfolge, die einen der folgenden Werte aufweisen kann: windowsApp, packagedClassicAppoder win32App. Nein
uap10:HostId- Dieser Wert gibt die ID der Hostlaufzeit für die Erweiterung an. Eine optionale alphanumerische Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen länge. Muss mit einem Buchstaben beginnen. Nein
uap10:Parameters Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 32767 Zeichen mit einem Nicht-Leerzeichen am Anfang und Ende. Nein
uap11:Id Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen länge mit einem Nicht-Leerzeichen am Anfang und Ende. Nein
uap11:Subsystem- Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Eine optionale Zeichenfolge, die einen der folgenden Werte aufweisen kann: Konsolen- oder Windows-. Nein
uap11:SupportsMultipleInstances Gibt an, ob Instanzen in verschiedenen Prozessen ausgeführt werden sollen. Der Standardwert ist "false". Ein optionaler boolescher Wert. Nein
uap11:ResourceGroup Ein Tag, mit dem Sie Erweiterungsaktivierungen für Ressourcenverwaltungszwecke (z. B. CPU und Arbeitsspeicher) gruppieren können. Der Wert, den Sie resourceGroup festlegen können, ist formfrei und flexibel. Siehe Application@ResourceGroup. Eine optionale alphanumerische Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen länge. Muss mit einem Buchstaben beginnen. Nein
uap11:CurrentDirectoryPath Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Dieses Attribut unterstützt Makros. Weitere Informationen finden Sie unter Makros im Paketmanifestschema. Eine optionale Zeichenfolge, die diese Zeichen nicht enthalten kann: <, >, |, ?oder *. > Nein
uap11:Parameters Dieses Attribut wird von der Basiserweiterungssyntax geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Überprüfung wird dieser Wert ignoriert. Dieses Attribut unterstützt Makros. Weitere Informationen finden Sie unter Makros im Paketmanifestschema. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 32767 Zeichen mit einem Nicht-Leerzeichen am Anfang und Ende. Nein
desktop7:CompatMode Gibt an, ob die Informationen dieser Erweiterung auf klassische Weise bei Windows registriert werden (z. B. entpackte Apps registrieren Typen mit COM über die Registrierung) oder auf neue, bereichsbezogenere Weise. Der Standardwert ist "modern". CompatMode="classic" erfordert die Microsoft.classicAppCompat_8wekyb3d8bbwe-Funktion. Eine optionale Zeichenfolge, die einen der folgenden Werte aufweisen kann: klassischen oder modernen. Nein
desktop7:Scope Gibt an, ob die Registrierungen nur für andere Anwendungen sichtbar sind, die als Benutzer ausgeführt werden, der dieses Paket registriert hat (Benutzer), oder ob sie für alle Benutzer und Dienste auf dem Computer (Computer) sichtbar sind. Der Standardwert ist "user". Scope="machine" erfordert die Microsoft.classicAppCompatElevated_8wekyb3d8bbwe Funktion. Eine optionale Zeichenfolge, die einen der folgenden Werte aufweisen kann: Computer oder Benutzer. Nein

Untergeordnete Elemente

Untergeordnetes Element Beschreibung
com4:ComServer Die ComServer-Erweiterung kann Klassenregistrierungen enthalten, einschließlich Aktivierungsdetails für die Server, die diese Klassen implementieren, sowie ProgId- und TreatAsClass-Registrierungen, die zusätzliche Bezeichner bereitstellen, die zum Verweisen auf diese Klassen zur Laufzeit verwendet werden.
com4:ComInterface Deklariert einen Paketerweiterungspunkt vom Typ windows.comInterface (com4:ComInterface).

Übergeordnete Elemente

Untergeordnetes Element Beschreibung
Erweiterungen Definiert einen oder mehrere Erweiterbarkeitspunkte für die App.

Bemerkungen

Die Com4-Erweiterung ist im Wesentlichen eine Neuschreibung der alten Syntax der Erweiterung "windows.comServer/windows.comInterface". Diese Erweiterung ist eine Obermenge der vorherigen Com-Erweiterungsfunktionalität mit identischem Verhalten für die geerbte Syntax. Die Manifestüberprüfung für die neue Syntax, die bei der Verpackung verwendet wird, ist besser an den semantischen Anforderungen der Erweiterung ausgerichtet.

  • In der vorherigen Version wurde jede Erweiterung als separates Dokument behandelt, sodass nicht eindeutige Schlüssel und Bezüge überprüft werden können.
  • In der vorherigen Version wurde die Duplizierung von Attributen, die eindeutigen/schlüsseleinschränkungen unterliegen, nur durch die Manifestüberprüfung abgefangen, wenn die duplizierten Attribute in derselben Instanz der Erweiterung angezeigt werden. Pakete, die diese Attribute dupliziert haben, können nicht bereitgestellt werden, mit eingeschränkten Diagnoseinformationen, um das Problem zu identifizieren.
  • In der vorherigen Version würde eine Keyref, deren Referent sich in einer anderen Instanz der Erweiterung befindet, durch die Manifestüberprüfung blockiert werden, was eine künstliche Einschränkung im Verhältnis zu der Unterstützung des Bereitstellungs-/Laufzeitverhaltens darstellt.

Anwendungen für Windows 11, die den neuen com4-Namespace für alle ihre windows.comServer/windows.comInterface-Erweiterungen verwenden können, sollten sie verwenden. Das Mischen des neuen Namespaces mit den älteren Namespaces wird aus Folgenden Gründen nicht empfohlen:

  • Durch die Bereitstellung des Pakets für Versionen, die den neuen Namespace unterstützen, werden Erweiterungen von allen Namespaces verarbeitet, und alle eindeutigen Bezeichner, die zwischen Erweiterungen mit unterschiedlichen Namespaceversionen dupliziert wurden, führen zu einem Fehler. Die Verwendung der älteren Namespaces verhindert, dass die Manifestüberprüfung diese Fehler erkennt.
  • Aufgrund von Einschränkungen der älteren Namespaceschemas kann eine Keyref in der alten Syntax nicht auf einen Schlüssel in der neuen Syntax verweisen, da sich diese in verschiedenen Instanzen der Erweiterung befinden.

Die Verwendung der folgenden com4-Syntaxsemantik hat Funktionsanforderungen:

  • CompatMode="classic" erfordert Microsoft.classicAppCompat_8wekyb3d8bbwe
  • Scope="machine" erfordert Microsoft.classicAppCompatElevated_8wekyb3d8bbwe

Das folgende Beispiel zeigt, wie Sie eine Out-of-Process- und eine In-Process-Serverimplementierung für dieselbe Klasse registrieren.

Beispiele

<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> 

Neue Features in der com4-Erweiterung

  • Unterstützung für In-Process-Server (sowohl nicht verwaltete als auch verwaltete) und benutzerdefinierte In-Process-Handler (d. a. nicht der OLE-Standardhandler). Diese Funktion ist derzeit durch die Richtlinie funktional begrenzt und eingeschränkt:
    • Dies ist derzeit nur für Pakete mit externem Speicherort vorgesehen. Es funktioniert für die meisten normalen Pakete aufgrund von ACLs am Installationsspeicherort nicht, die verhindern, dass die DLL-Dateien des Pakets außerhalb des Pakets geladen werden. Weitere Informationen zu Paketen mit externem Speicherort finden Sie unter Gewähren der Paketidentität durch Verpacken mit externem Speicherort.
  • Es ist jetzt möglich, eine TypeLib einer Klassenregistrierung zuzuordnen.

Anforderungen

Artikel Wert
Namespace- http://schemas.microsoft.com/appx/manifest/com/windows10/4
Mindestversion des Betriebssystems Windows 10 (Build 20348)