Bagikan melalui


Gunakan API dependensi dinamis untuk mereferensikan paket MSIX pada waktu proses

Dua implementasi

Ada dua implementasi API dependensi dinamis yang dapat Anda pilih, tergantung pada platform dan skenario target Anda:

  • API dependensi dinamis SDK Aplikasi Windows. SDK Aplikasi Windows menyediakan fungsi C dan C++ (dalam jenis msixdynamicdependency.h), dan Windows Runtime (WinRT) (di namespace Microsoft.Windows.ApplicationModel.DynamicDependency) yang mengimplementasikan API dependensi dinamis. Anda dapat menggunakan implementasi API ini pada versi Windows apa pun yang mendukung SDK Aplikasi Windows.
  • API dependensi dinamis Windows 11. Windows 11 juga menyediakan fungsi C dan C++ yang mengimplementasikan API dependensi dinamis (di appmodel.h). Implementasi API ini hanya dapat digunakan oleh aplikasi yang menargetkan Windows 11, versi 22H2 (10.0; Bangun 22621), dan yang lebih baru.

Lihat juga Perbedaan antara kedua implementasi.

Catatan

Seperti yang akan Anda lihat dalam topik ini, API SDK Aplikasi Windows (C/C++) memiliki nama yang sama dengan API Windows 11 (C/C++) dengan awalan Mdd tambahan. Mdd adalah singkatan dari Dependensi Dinamis Microsoft.

Dan ada berbagai jenis paket MSIX, termasuk kerangka kerja, sumber daya, opsional, dan paket utama . API dependensi dinamis memungkinkan aplikasi yang tidak dikemas untuk mereferensikan dan menggunakan paket kerangka kerja seperti WinUI 2 dan DirectX Runtime. Untuk informasi selengkapnya tentang dependensi paket kerangka kerja, lihat paket kerangka kerja MSIX dan dependensi dinamis.

Secara khusus, API dependensi dinamis menyediakan cara untuk mengelola referensi waktu penginstalan dan referensi run-time untuk paket MSIX. Untuk informasi selengkapnya, lihat Model layanan untuk paket kerangka kerja.

Menggunakan API dependensi dinamis

Untuk menggunakan API dependensi dinamis di aplikasi yang tidak dikemas untuk mengambil dependensi pada paket MSIX, ikuti pola umum ini dalam kode Anda:

1. Buat referensi waktu penginstalan

Di alat penginstal aplikasi Anda, atau selama eksekusi pertama aplikasi Anda, panggil salah satu fungsi atau metode berikut untuk menentukan serangkaian kriteria untuk paket MSIX yang ingin Anda gunakan. Ini menginformasikan sistem operasi (OS) bahwa aplikasi Anda memiliki dependensi pada paket MSIX yang memenuhi kriteria yang ditentukan. Jika satu atau beberapa paket MSIX diinstal yang memenuhi kriteria, maka Windows memastikan bahwa setidaknya salah satu dari mereka tetap diinstal sampai referensi waktu penginstalan dihapus.

Kriteria yang Anda tentukan termasuk nama keluarga paket, versi minimum, dan arsitektur; tetapi Anda tidak dapat menunjukkan paket MSIX tertentu. Saat Anda menambahkan referensi run-time ke paket MSIX, API memilih versi tertinggi yang memenuhi kriteria yang ditentukan.

Anda juga harus menentukan artefak seumur hidup, yang dapat menjadi proses saat ini, file, atau kunci Windows Registry yang menunjukkan kepada sistem bahwa aplikasi masih tersedia. Jika artefak yang ditentukan tidak ada lagi, maka OS dapat mengasumsikan bahwa dependensi tidak lagi diperlukan, dan dapat menghapus instalan paket MSIX jika tidak ada aplikasi lain yang mendeklarasikan dependensi padanya. Fitur tersebut berguna untuk skenario di mana aplikasi mengabaikan untuk menghapus pin waktu penginstalan saat dihapus instalasinya.

API ini mengembalikan ID dependensi yang harus digunakan dalam panggilan lain untuk membuat referensi run-time, dan untuk menghapus referensi waktu penginstalan.

2. Tambahkan referensi run-time

Saat aplikasi Anda perlu menggunakan paket MSIX, panggil salah satu fungsi atau metode berikut untuk meminta akses ke paket MSIX yang ditentukan, dan tambahkan referensi run-time untuknya. Memanggil API ini menginformasikan OS bahwa paket MSIX sedang digunakan secara aktif, dan untuk menangani pembaruan versi apa pun secara berdampingan (secara efektif menunda-menghapus instalasi atau melayani versi yang lebih lama sampai setelah aplikasi selesai menggunakannya). Jika berhasil, aplikasi mungkin mengaktifkan kelas dan menggunakan konten dari paket MSIX.

Saat Anda memanggil API ini, Anda harus meneruskan ID dependensi yang dikembalikan saat membuat referensi waktu penginstalan, dan peringkat yang diinginkan untuk digunakan untuk paket MSIX dalam grafik paket proses. API ini mengembalikan nama lengkap paket MSIX yang dirujuk, dan handel yang digunakan untuk melacak dependensi penggunaan aktif. Jika ada beberapa paket MSIX yang diinstal yang memenuhi kriteria yang Anda tentukan saat membuat referensi waktu penginstalan, MAKA API memilih versi tertinggi yang memenuhi kriteria.

3. Hapus referensi run-time

Setelah aplikasi Anda selesai menggunakan paket MSIX, panggil salah satu fungsi atau metode berikut untuk menghapus referensi run-time. Biasanya, aplikasi Anda akan memanggil API ini selama penonaktifan. API ini menginformasikan OS bahwa aman untuk menghapus versi paket MSIX yang tidak perlu.

Saat Anda memanggil API ini, Anda harus meneruskan handel yang dikembalikan saat anda menambahkan referensi run-time.

4. Hapus referensi waktu penginstalan

Saat aplikasi Anda dihapus instalannya, panggil salah satu fungsi atau metode berikut untuk menghapus referensi waktu penginstalan. API ini menginformasikan OS bahwa aman untuk menghapus paket MSIX jika tidak ada aplikasi lain yang memiliki dependensi padanya.

Saat Anda memanggil API ini, Anda harus meneruskan ID dependensi yang dikembalikan saat membuat referensi waktu penginstalan.

Perbedaan antara dua implementasi

Kebutuhan akan manajer seumur hidup (batasan SDK Aplikasi Windows)

Saat Anda menggunakan API dependensi dinamis SDK Aplikasi Windows untuk mengambil dependensi pada paket MSIX, API memerlukan bantuan melalui paket lain yang diinstal dan menjalankan proses untuk memberi tahu Windows bahwa paket MSIX sedang digunakan, dan untuk memblokir layanan kerangka kerja saat sedang digunakan. Komponen itu disebut manajer seumur hidup.

Untuk paket kerangka kerjanya, SDK Aplikasi Windows menyediakan komponen manajer seumur hidup yang disebut Dynamic Dependency Lifetime Manager (DDLM). Namun, tidak ada paket kerangka kerja lain yang saat ini menyediakan komponen manajer seumur hidup serupa dari Microsoft.

API dependensi dinamis Windows 11 tidak memiliki batasan ini.

Mereferensikan dan menggunakan paket utama (batasan SDK Aplikasi Windows)

Dependensi dinamis selalu dapat menargetkan paket kerangka kerja . Tetapi hanya API dependensi dinamis Windows 11 yang dapat mereferensikan dan menggunakan paket utama juga.

Paket utama harus telah mengonfigurasi file sumber manifes paket aplikasi dengan benar ( Package.appxmanifest file di Visual Studio). Secara khusus, paket utama (target, bukan pemanggil) perlu diatur <uap15:DependencyTarget>true</> (lihat uap15:DependencyTarget). Jadi tujuannya <uap15::DependencyTarget> adalah untuk mengaktifkan dependensi dinamis untuk menargetkan paket utama . Dengan kata lain, paket utama harus ikut serta untuk memungkinkan dirinya digunakan sebagai dependensi dinamis (sedangkan paket kerangka kerja selalu secara implisit memungkinkannya).

Mereferensikan paket kerangka kerja SDK Aplikasi Windows (batasan SDK Aplikasi Windows)

Dalam aplikasi yang tidak dikemas, Anda tidak dapat menggunakan API dependensi dinamis SDK Aplikasi Windows untuk mereferensikan paket kerangka kerja SDK Aplikasi Windows (seperti Anda dapat mereferensikan paket MSIX lainnya dengannya). Sebagai gantinya, Anda perlu menggunakan API bootstrapper yang disediakan oleh SDK Aplikasi Windows. API bootstrapper adalah bentuk khusus dari API dependensi dinamis yang dirancang untuk mengambil dependensi pada paket kerangka kerja SDK Aplikasi Windows. Untuk informasi selengkapnya, lihat Menggunakan runtime SDK Aplikasi Windows untuk aplikasi yang dikemas dengan lokasi eksternal atau tidak dikemas.

API dependensi dinamis Windows 11 tidak memiliki batasan ini.