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
<com4:Extension>
<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) |