Membuat ekstensi paket untuk aplikasi SDK Aplikasi Windows

Ekstensi paket memperluas model ekstensi aplikasi dengan memungkinkan berbagi konten yang lebih luas antar paket. Host ekstensi paket dapat menerima ekstensi dari paket apa pun, sehingga cocok untuk skenario ekstensibilitas tingkat platform.

Note

Ekstensi paket memerlukan Windows 11 dan menggunakan uap17 namespace. Untuk pendekatan yang kompatibel sebelumnya, lihat Ekstensi aplikasi yang menggunakan uap3.

Ekstensi paket vs. ekstensi aplikasi

Feature Ekstensi aplikasi (uap3) Ekstensi paket (uap17)
Sistem Operasi Minimum Windows 10 1607 Windows 11
Ruang lingkup Per aplikasi Per paket
Berbagi konten Folder publik saja Akses konten paket lengkap
Namespace manifest uap3:AppExtension uap17:PackageExtension

Deklarasikan host ekstensi paket

PackageExtensionHost Tambahkan deklarasi ke manifes aplikasi host:

<Package xmlns:uap17="http://schemas.microsoft.com/appx/manifest/uap/windows10/17" ...>
  <Applications>
    <Application ...>
      <Extensions>
        <uap17:Extension Category="windows.packageExtensionHost">
          <uap17:PackageExtensionHost>
            <uap17:Name>com.example.myplatform.extensions</uap17:Name>
          </uap17:PackageExtensionHost>
        </uap17:Extension>
      </Extensions>
    </Application>
  </Applications>
</Package>

Deklarasikan ekstensi paket

Dalam manifes paket ekstensi:

<Package xmlns:uap17="http://schemas.microsoft.com/appx/manifest/uap/windows10/17" ...>
  <Applications>
    <Application ...>
      <Extensions>
        <uap17:Extension Category="windows.packageExtension">
          <uap17:PackageExtension Name="com.example.myplatform.extensions"
                                   Id="MyExtension"
                                   DisplayName="My Extension"
                                   Description="Adds features to the platform">
            <uap17:Properties>
              <ExtensionType>content</ExtensionType>
              <Version>1.0</Version>
            </uap17:Properties>
          </uap17:PackageExtension>
        </uap17:Extension>
      </Extensions>
    </Application>
  </Applications>
</Package>

Temukan perluasan paket

Gunakan API AppExtensionCatalog yang sama untuk menemukan ekstensi paket saat runtime. Nama host sesuai dengan Name yang dideklarasikan dalam manifes:

var catalog = AppExtensionCatalog.Open("com.example.myplatform.extensions");
var extensions = await catalog.FindAllAsync();

foreach (var ext in extensions)
{
    System.Diagnostics.Debug.WriteLine(
        $"Found extension: {ext.DisplayName} ({ext.Id})");

    // Read custom properties
    var properties = await ext.GetExtensionPropertiesAsync();
    // Access properties as needed
}

Praktik terbaik

  • Gunakan konvensi penamaan domain terbalik untuk nama ekstensi (misalnya, com.company.app.extensions).
  • Versi protokol ekstensi Anda sehingga aplikasi host dapat menangani format ekstensi lama dan baru.
  • Validasi konten ekstensi sebelum menggunakannya — ekstensi berasal dari paket lain dan tidak boleh tepercaya secara membabi buta.