com4:Extension

Menyediakan fungsionalitas untuk mengekspos pendaftaran COM kepada klien di luar paket aplikasi. Ekstensi com4 adalah versi baru yang merupakan superset dan penggantian untuk versi skema COM sebelumnya. Lihat bagian Keterangan untuk informasi selengkapnya.

Hierarki elemen

<Paket>

    <Aplikasi>

         <Aplikasi>

              <Ekstensi>

                   <com4:Extension>

Sintaks

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

Atribut dan elemen

Atribut

Atribut Deskripsi Jenis Data Diperlukan Nilai default
Kategori Jenis titik ekstensibilitas aplikasi. String yang dapat memiliki salah satu nilai berikut: windows.comServer atau windows.comInterface. Ya
Eksekusi Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional dengan nilai antara 1 dan 256 karakter yang harus diakhbungi dengan .exe dan tidak boleh berisi karakter ini: <, , >, :", |, , ?atau *. Tidak
EntryPoint Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional dengan nilai antara 1 dan 256 karakter yang tidak dapat dimulai atau diakhir dengan karakter spasi kosong. Tidak
RuntimeType Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional dengan nilai antara 1 dan 255 karakter yang tidak dapat dimulai atau diakhir dengan titik atau berisi karakter ini: <, , :>, ", /, \, |, , ?, atau *. Tidak
StartPage Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional dengan nilai antara 1 dan 256 karakter yang tidak boleh berisi karakter ini: <, , >, :", |, ?, atau *. Tidak
ResourceGroup Tag yang dapat Anda gunakan untuk mengelompokkan aktivasi ekstensi bersama-sama untuk tujuan manajemen sumber daya (misalnya, CPU dan memori). Nilai yang dapat Anda atur ResourceGroup adalah bentuk bebas dan fleksibel. Lihat Application@ResourceGroup. String alfanumerik opsional dengan nilai antara 1 dan 255 karakter. Harus dimulai dengan huruf. Tidak
uap10:TrustLevel Menentukan tingkat kepercayaan ekstensi. Dalam rilis saat ini, atribut ini tidak didukung untuk ekstensi com4. Nilai "mediumIL" selalu digunakan. String opsional yang dapat memiliki salah satu nilai berikut: appContainer atau mediumIL. Tidak
uap10:RuntimeBehavior Menentukan perilaku run time ekstensi. Dalam rilis saat ini, atribut ini tidak didukung untuk ekstensi com4. Nilai "packagedClassicApp" selalu digunakan. String opsional dapat memiliki salah satu nilai berikut: windowsApp, packagedClassicApp, atau win32App. Tidak
uap10:HostId Nilai ini Menentukan ID runtime host untuk ekstensi. String alfanumerik opsional dengan nilai antara 1 dan 255 karakter. Harus dimulai dengan huruf. Tidak
uap10:Parameters Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional dengan nilai antara 1 dan 32767 karakter dengan karakter non-spasi di awal dan akhir. Tidak
uap11:Id Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional dengan nilai antara 1 dan 255 karakter dengan karakter non-spasi di awal dan akhir. Tidak
uap11:Subsistem Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional yang dapat memiliki salah satu nilai berikut: konsol atau jendela. Tidak
uap11:SupportsMultipleInstances Menentukan apakah instans harus berjalan dalam proses yang berbeda. Nilai defaultnya adalah false. Nilai boolean opsional. Tidak
uap11:ResourceGroup Tag yang dapat Anda gunakan untuk mengelompokkan aktivasi ekstensi bersama-sama untuk tujuan manajemen sumber daya (misalnya, CPU dan memori). Nilai yang dapat Anda atur ResourceGroup adalah bentuk bebas dan fleksibel. Lihat Application@ResourceGroup. String alfanumerik opsional dengan nilai antara 1 dan 255 karakter. Harus dimulai dengan huruf. Tidak
uap11:CurrentDirectoryPath Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional yang tidak boleh berisi karakter ini: <, , >, |?, atau *. > Tidak
uap11:Parameters Atribut ini diwarisi dari sintaks ekstensi dasar dan tidak berlaku untuk ekstensi com4. Selain validasi sintaksis, nilai ini diabaikan. String opsional dengan nilai antara 1 dan 32767 karakter dengan karakter non-spasi di awal dan akhir. Tidak
desktop7:CompatMode Menentukan apakah informasi ekstensi ini terdaftar dengan Windows dengan cara klasik (misalnya, aplikasi yang tidak dikemas mendaftarkan jenis dengan COM melalui registri) atau dengan cara baru yang lebih tercakup. Nilai defaultnya adalah "modern". CompatMode="classic" memerlukan kemampuan Microsoft.classicAppCompat_8wekyb3d8bbwe . String opsional dapat memiliki salah satu nilai berikut: klasik atau modern. Tidak
desktop7:Cakupan Menentukan apakah pendaftaran hanya terlihat oleh aplikasi lain yang berjalan sebagai pengguna yang memiliki paket ini terdaftar (pengguna), atau apakah mereka terlihat oleh semua pengguna dan layanan pada mesin (mesin). Nilai defaultnya adalah "pengguna". Scope="machine" memerlukan kemampuan Microsoft.classicAppCompatElevated_8wekyb3d8bbwe . String opsional yang dapat memiliki salah satu nilai berikut: mesin atau pengguna. Tidak

Elemen anak

elemen anak Deskripsi
com4:ComServer Ekstensi comServer dapat mencakup pendaftaran kelas, termasuk detail aktivasi untuk server yang mengimplementasikan kelas ini, dan pendaftaran ProgId dan TreatAsClass, yang menyediakan pengidentifikasi tambahan yang digunakan untuk mereferensikan kelas ini saat runtime.
com4:ComInterface Mendeklarasikan titik ekstensi paket jenis windows.comInterface (com4:ComInterface).

Elemen induk

elemen anak Deskripsi
Ekstensi Menentukan satu atau beberapa titik ekstensibilitas untuk aplikasi.

Keterangan

Ekstensi com4 pada dasarnya adalah penulisan ulang sintaks ekstensi windows.comServer/windows.comInterface lama. Ekstensi ini adalah superset dari fungsionalitas ekstensi com sebelumnya, dengan perilaku identik untuk sintaks yang diwariskan. Validasi manifes untuk sintaks baru seperti yang digunakan dalam kemasan lebih selaras dengan persyaratan semantik ekstensi.

  • Dalam versi sebelumnya, setiap ekstensi diperlakukan sebagai dokumen terpisah, memungkinkan kunci yang tidak unik dan referensi yang menggorung divalidasi.
  • Dalam versi sebelumnya, duplikasi atribut yang tunduk pada batasan unik/kunci hanya ditangkap oleh validasi manifes jika atribut duplikat muncul dalam instans ekstensi yang sama. Paket yang menduplikasi atribut ini akan gagal disebarkan, dengan informasi diagnostik terbatas untuk mengidentifikasi masalah.
  • Dalam versi sebelumnya, keyref yang referensinya berada dalam instans ekstensi yang berbeda akan diblokir oleh validasi manifes, yang merupakan pembatasan buatan relatif terhadap apa yang didukung perilaku penyebaran/runtime.

Aplikasi yang menargetkan Windows 11 yang dapat menggunakan namespace com4 baru untuk semua ekstensi windows.comServer/windows.comInterface mereka harus menggunakannya. Mencampur namespace baru dengan namespace yang lebih lama tidak disarankan, karena alasan termasuk:

  • Menyebarkan paket pada versi yang mendukung namespace layanan baru akan menangani ekstensi dari semua namespace, dan setiap pengidentifikasi unik yang diduplikasi antara ekstensi menggunakan versi namespace yang berbeda akan mengakibatkan kegagalan. Penggunaan namespace yang lebih lama mencegah validasi manifes mendeteksi kesalahan ini.
  • Karena keterbatasan skema namespace yang lebih lama, keyref dalam sintaks lama tidak dapat merujuk ke kunci dalam sintaks baru karena ini berada dalam instans ekstensi yang berbeda.

Penggunaan semantik sintaks com4 berikut memiliki persyaratan kemampuan:

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

Contoh berikut menunjukkan cara mendaftarkan implementasi server di luar proses dan dalam proses untuk kelas yang sama.

Contoh

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

Fitur baru dalam ekstensi com4

  • Dukungan untuk server dalam proses (baik tidak terkelola maupun terkelola) dan handler dalam proses kustom (yaitu, bukan handler default OLE). Kemampuan ini saat ini dibatasi dan dibatasi oleh kebijakan secara fungsional:
    • Ini saat ini ditujukan untuk digunakan hanya oleh paket dengan lokasi eksternal; ini tidak berfungsi untuk sebagian besar paket normal karena ACL pada lokasi penginstalan yang mencegah dll paket dimuat di luar paket. Untuk informasi selengkapnya tentang paket dengan lokasi eksternal, lihat Memberikan identitas paket dengan pengemasan dengan lokasi eksternal.
  • Sekarang dimungkinkan untuk mengaitkan TypeLib dengan pendaftaran kelas.

Persyaratan

Item Nilai
Ruang nama http://schemas.microsoft.com/appx/manifest/com/windows10/4
Versi OS Minimum Windows 10 (Build 20348)