Jenis paket MSIX

MSIX mendukung empat jenis paket: Main, Framework, Resource, dan Optional. MSIX juga mendukung paket Bundel, yang merupakan kontainer distribusi untuk satu atau beberapa paket MSIX.

Jenis paket menentukan kombinasi perilaku penyebaran, dependensi, eksekusi, dan pemeliharaan. Beberapa perilaku melekat pada jenisnya, sementara deklarasi manifes dapat mengambil alih default lainnya.

Type Tujuan utama Indikator manifest atau identitas
Utama Paket utama untuk aplikasi Tidak ada deklarasi untuk jenis paket lain
Kerangka Pustaka bersama, komponen, atau konten runtime <Framework>true</Framework>
Sumber Sumber daya khusus bahasa, skala, atau kualifier <ResourcePackage>true</ResourcePackage>
Fakultatif Konten tambahan yang terkait dengan satu paket Utama <uap3:MainPackageDependency>
Bundle Kontainer distribusi untuk beberapa paket MSIX Manifes bundel dan sebuah nilai ~ pada ResourceId

Paket utama

Paket Utama mewakili paket utama untuk aplikasi. Ini dapat mendeklarasikan aplikasi, kemampuan, dependensi, ekstensi, dan server di luar proses.

Manifes tidak berisi penanda Main-package eksplisit. Sebuah paket merupakan paket Utama ketika tidak mendeklarasikan dirinya sebagai jenis paket lain.

Paket kerangka kerja

paket framework menyediakan pustaka bersama, komponen, sumber daya, atau konten runtime lainnya. Paket atau proses lain menambahkan paket Framework ke graf paket mereka sebelum memuat kontennya.

Paket kerangka kerja mendukung versi berdampingan sehingga aplikasi dapat berpindah ke versi yang lebih baru secara independen. Paket mendeklarasikan jenis ini dengan mengatur elemen manifes Framework ke true.

Untuk informasi tentang menggunakan paket Framework dari proses yang dikemas dan tidak dikemas, lihat Menggunakan API dependensi dinamis.

Paket sumber daya

Paket resource memisahkan sumber daya bahasa, skala tampilan, atau sumber daya khusus qualifier lainnya dari paket Utama atau Opsional. Windows hanya menginstal paket sumber daya yang berlaku untuk perangkat atau pengguna.

Paket resource tidak mengizinkan eksekusi secara default. Paket dapat mengambil alih default ini dengan uap6:AllowExecution. Paket mendeklarasikan jenis Sumber Daya dengan mengatur ResourcePackage ke true.

Paket opsional

Paket Opsional berisi konten tambahan untuk paket Utama tertentu. Misalnya, aplikasi dapat menempatkan peta yang dapat diunduh, aset resolusi tinggi, atau alat opsional dalam paket terpisah.

Tidak seperti paket Framework, paket Opsional dikaitkan dengan satu keluarga paket Utama. Ini mendeklarasikan hubungan tersebut melalui uap3:MainPackageDependency.

Untuk penyusunan dan persyaratan set terkait, lihat Paket opsional dan penyusunan set terkait.

Paket bundel

Bundel MSIX (.msixbundle) berisi satu atau beberapa paket MSIX. Bundel menyediakan satu artefak distribusi sambil memungkinkan Windows menginstal hanya paket arsitektur dan paket sumber daya yang berlaku untuk perangkat target.

Semua paket dalam bundel termasuk dalam keluarga paket yang sama. Bundel adalah kontainer, bukan jenis paket kelima yang dapat disebarkan.

Mengidentifikasi jenis paket dalam kode

Kelas Windows.ApplicationModel.Package mengekspos properti yang mengidentifikasi jenis paket:

static string GetPackageType(Windows.ApplicationModel.Package package)
{
    if (package.IsBundle)
    {
        return "Bundle";
    }

    if (package.IsFramework)
    {
        return "Framework";
    }

    if (package.IsResourcePackage)
    {
        return "Resource";
    }

    if (package.IsOptional)
    {
        return "Optional";
    }

    return "Main";
}

Mengidentifikasi jenis paket dengan PowerShell

Secara default, Get-AppxPackage mengembalikan paket Utama dan Kerangka Kerja. Gunakan -PackageTypeFilter untuk menyertakan jenis lain:

Get-AppxPackage -PackageTypeFilter Main,Framework,Resource,Optional,Bundle |
    Select-Object Name, PackageFullName, IsFramework, IsResourcePackage, IsBundle

Objek output tidak mengekspos properti IsOptional. Gunakan filter untuk menyertakan paket Opsional, dan periksa manifes atau hubungan paketnya saat Anda perlu membedakannya.