com4:Extension

Bietet Funktionen zum Verfügbarmachen von COM-Registrierungen für Clients außerhalb des App-Pakets. Die com4-Erweiterung ist eine neue Version, die eine Übermenge von und Ersatz für die vorherigen COM-Schemaversionen darstellt. Weitere Informationen finden Sie im Abschnitt Hinweise.

Elementhierarchie

<Paket>

    <Anwendungen>

         <Anwendung>

              <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

attribute BESCHREIBUNG Datentyp Erforderlich Standardwert
Kategorie Der Typ des App-Erweiterbarkeitspunkts. Eine Zeichenfolge, die einen der folgenden Werte haben kann: windows.comServer oder windows.comInterface. Yes
Ausführbare Datei Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 256 Zeichen Länge, der mit und enden .exe muss und nicht die folgenden Zeichen enthalten darf: <, , >:, , ", |?oder *. No
EntryPoint Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 256 Zeichen Länge, der nicht mit einem Leerzeichen beginnen oder enden kann. No
Runtimetype Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen Länge, die nicht mit einem Punkt beginnen oder enden kann oder die folgenden Zeichen enthält: , , , ":, /, \, , |?oder *. >< No
StartPage Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 256 Zeichen Länge, die die folgenden Zeichen nicht enthalten kann: <, , :>, ", |, , ?oder *. No
ResourceGroup Ein Tag, mit dem Sie Erweiterungsaktivierungen für Ressourcenverwaltungszwecke gruppieren können (z. B. CPU und Arbeitsspeicher). Der Wert, den Sie ResourceGroup festlegen können, ist freiform und flexibel. Siehe Application@ResourceGroup. Eine optionale alphanumerische Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen Länge. Muss mit einem Buchstaben beginnen. No
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. No
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, packagedClassicApp oder win32App. No
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. No
uap10:Parameter Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 32767 Zeichen Länge mit einem Zeichen ohne Leerzeichen am Anfang und Ende. No
uap11:ID Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen Länge mit einem Zeichen ohne Leerzeichen am Anfang und Ende. No
uap11:Subsystem Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge, die einen der folgenden Werte aufweisen kann: Konsole oder Fenster. No
uap11:SupportsMultipleInstances Gibt an, ob Instanzen in unterschiedlichen Prozessen ausgeführt werden sollen. Der Standardwert ist „FALSE“. Ein optionaler boolescher Wert. No
uap11:ResourceGroup Ein Tag, mit dem Sie Erweiterungsaktivierungen für Ressourcenverwaltungszwecke gruppieren können (z. B. CPU und Arbeitsspeicher). Der Wert, den Sie ResourceGroup festlegen können, ist freiform und flexibel. Siehe Application@ResourceGroup. Eine optionale alphanumerische Zeichenfolge mit einem Wert zwischen 1 und 255 Zeichen Länge. Muss mit einem Buchstaben beginnen. No
uap11:CurrentDirectoryPath Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge, die die folgenden Zeichen nicht enthalten kann: <, >, |, ?oder *. > No
uap11:Parameter Dieses Attribut wird von der Syntax der Basiserweiterung geerbt und gilt nicht für die com4-Erweiterung. Abgesehen von der syntaktischen Validierung wird dieser Wert ignoriert. Eine optionale Zeichenfolge mit einem Wert zwischen 1 und 32767 Zeichen länge mit einem Leerzeichen am Anfang und Ende. No
desktop7:CompatMode Gibt an, ob die Informationen dieser Erweiterung auf klassische Weise bei Windows registriert werden (z. B. unpackte Apps registrieren Typen bei COM über die Registrierung) oder auf neue, umfassendere Methoden. Der Standardwert ist "modern". CompatMode="classic" erfordert die Microsoft.classicAppCompat_8wekyb3d8bbwe-Funktion . Eine optionale Zeichenfolge kann einen der folgenden Werte aufweisen: klassisch oder modern. No
desktop7:Bereich 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. No

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.

Hinweise

Die com4-Erweiterung ist im Wesentlichen eine Neuschreibung der alten Syntax der Windows.comServer/windows.comInterface-Erweiterung. Diese Erweiterung ist eine Obermenge der vorherigen Com-Erweiterungsfunktionalität mit identischem Verhalten für die geerbte Syntax. Die Manifestvalidierung für die neue Syntax, die in der Paketerstellung 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 klammernde Verweise überprüft werden konnten.
  • In der vorherigen Version wurde die Duplizierung von Attributen, die Eindeutigkeits-/Schlüsseleinschränkungen unterliegen, nur dann von der Manifestüberprüfung abgefangen, wenn die doppelten Attribute im gleichen instance 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 wurde ein Keyref, dessen Referent sich in einem anderen instance der Erweiterung befindet, durch die Manifestvalidierung blockiert. Dies ist eine künstliche Einschränkung im Verhältnis zu dem, was das Bereitstellungs-/Laufzeitverhalten unterstützt.

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

  • Die Bereitstellung des Pakets in Versionen, die den neuen Namespace unterstützen, behandelt Erweiterungen aus allen Namespaces, und alle eindeutigen Bezeichner, die zwischen Erweiterungen mit unterschiedlichen Namespaceversionen dupliziert werden, führen zu einem Fehler. Die Verwendung der älteren Namespaces verhindert, dass die Manifestüberprüfung diese Fehler erkennt.
  • Aufgrund der Einschränkungen der älteren Namespaceschemas kann ein Keyref in der alten Syntax nicht auf einen Schlüssel in der neuen Syntax verweisen, da diese sich 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 Prozessinterne Server (nicht verwaltete und verwaltete) und benutzerdefinierte Prozesshandler (d. a. nicht den OLE-Standardhandler). Diese Funktion ist derzeit funktional eingeschränkt und durch eine Richtlinie eingeschränkt:
    • Dies ist derzeit nur für Die Verwendung durch Pakete mit externem Speicherort vorgesehen. Dies funktioniert bei den meisten normalen Paketen nicht aufgrund von ACLs am Installationsspeicherort, die verhindern, dass die DLLs des Pakets außerhalb des Pakets geladen werden. Weitere Informationen zu Paketen mit externem Speicherort finden Sie unter Gewähren der Paketidentität durch Packen mit externem Speicherort.
  • Es ist jetzt möglich, eine TypeLib einer Klassenregistrierung zuzuordnen.

Anforderungen

Element Wert
Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (Build 20348)