Aracılığıyla paylaş


Çalışma zamanında MSIX paketlerine başvurmak için dinamik bağımlılık API'sini kullanma

İki uygulama

Hedef platformunuza ve senaryonuza bağlı olarak, dinamik bağımlılık API'sinin aralarından seçim yapabileceğiniz iki uygulaması vardır:

  • Windows Uygulama SDK'sının dinamik bağımlılık API'si. Windows Uygulama SDK'sı, dinamik bağımlılık API'sini uygulayan C ve C++ işlevleri ( msixdynamicdependency.h içinde) ve Windows Çalışma Zamanı (WinRT) türlerini ( Microsoft.Windows.ApplicationModel.DynamicDependency ad alanında) sağlar. API'nin bu uygulamasını Windows'un Windows Uygulama SDK'sını destekleyen herhangi bir sürümünde kullanabilirsiniz.
  • Windows 11'in dinamik bağımlılık API'si . Windows 11, dinamik bağımlılık API'sini ( appmodel.h içinde) uygulayan C ve C++ işlevleri de sağlar. API'nin bu uygulaması, yalnızca Windows 11, sürüm 22H2 (10.0; Derleme 22621) ve sonrası için hedeflenen uygulamalar tarafından kullanılabilir.

Ayrıca bkz . İki uygulama arasındaki farklar.

Uyarı

Bu konuda göreceğiniz gibi, Windows Uygulama SDK'sı (C/C++) API'leri, ek Mdd ön ekiyle Windows 11 (C/C++) API'leriyle aynı adlara sahiptir. Mdd, Microsoft Dinamik Bağımlılıkları anlamına gelir.

Çerçeve, kaynak, isteğe bağlı ve anapaketler de dahil olmak üzere farklı türlerde MSIX paketleri vardır. Dinamik bağımlılık API'si, paketlenmemiş uygulamaların WinUI 2 ve DirectX Çalışma Zamanı gibi çerçeve paketlerine başvurmasını ve kullanmasını sağlar. Çerçeve paketi bağımlılıkları hakkında daha fazla bilgi için bkz. MSIX çerçeve paketleri ve dinamik bağımlılıklar.

Özellikle dinamik bağımlılık API' yükleme zamanı başvurularını yönetmenin yollarını ve MSIX paketleri için çalışma zamanı başvurularını sağlar. Daha fazla bilgi için bkz . Çerçeve paketleri için bakım modeli.

Dinamik bağımlılık API'sini kullanma

Paketlenmemiş uygulamanızda dinamik bağımlılık API'sini kullanarak bir MSIX paketine bağımlılık almak için kodunuzda şu genel deseni izleyin:

1. Yükleme zamanı başvurusu oluşturma

Uygulamanızın yükleyicisinde veya uygulamanızın ilk çalıştırması sırasında, kullanmak istediğiniz MSIX paketi için bir ölçüt kümesi belirtmek üzere aşağıdaki işlevlerden veya yöntemlerden birini çağırın. Bu, işletim sistemini (OS) uygulamanızın belirtilen ölçütleri karşılayan bir MSIX paketine bağımlılığı olduğunu bildirir. Ölçütlere uyan bir veya daha fazla MSIX paketi yüklüyse Windows, yükleme zamanı başvurusu silinene kadar bunlardan en az birinin yüklü kalmasını sağlar.

Belirttiğiniz ölçütler paket ailesi adını, en düşük sürümü ve mimarileri içerir; ancak belirli bir MSIX paketini belirtemezsiniz. MSIX paketine bir çalışma zamanı başvurusu eklediğinizde, API belirtilen ölçütleri karşılayan en yüksek sürümü seçer.

Ayrıca, sistemine uygulamanın hala kullanılabilir olduğunu belirtmek için, yaşam süresi yapıtı olarakbelirtmelisiniz; bu, halihazırda çalışan bir işlem, bir dosya veya bir Windows Kayıt Defteri anahtarı olabilir. Belirtilen yapıt artık yoksa, işletim sistemi bağımlılığın artık gerekli olmadığını varsayabilir ve başka hiçbir uygulama bağımlılık bildirmezse MSIX paketini kaldırabilir. Bu özellik, bir uygulamanın kaldırıldığında yükleme zamanı pin'ini kaldırmayı ihmal ettiği senaryolar için kullanışlıdır.

Bu API, çalışma zamanı başvuruları oluşturmak ve yükleme zamanı başvurusunu silmek için diğer çağrılarda kullanılması gereken bir bağımlılık kimliği döndürür.

2. Çalışma zamanı başvurusu ekleme

Uygulamanızın MSIX paketini kullanması gerektiğinde, belirtilen MSIX paketine erişim istemek için aşağıdaki işlevlerden veya yöntemlerden birini çağırın ve bunun için bir çalışma zamanı başvurusu ekleyin. Bu API'nin çağrılması, işletim sistemine MSIX paketinin etkin kullanımda olduğunu ve tüm sürüm güncelleştirmelerini eşzamanlı bir şekilde işlemesini bildirir (uygulama bunu kullanmayı bitirene kadar eski sürümün gecikmeli olarak kaldırılması veya başka bir şekilde bakım yapılması). Başarılı olursa uygulama sınıfları etkinleştirebilir ve MSIX paketindeki içeriği kullanabilir.

Bu API'yi çağırdığınızda, yükleme zamanı başvurusunu oluştururken döndürülen bağımlılık kimliğini ve işlemin paket grafında MSIX paketi için kullanılacak istenen dereceyi geçirmeniz gerekir. Bu API, başvuruda bulunan MSIX paketinin tam adını ve etkin kullanım bağımlılığını izlemek için kullanılan tanıtıcıyı döndürür. Yükleme zamanı başvurusunu oluştururken belirttiğiniz ölçütleri karşılayan birden çok MSIX paketi yüklüyse, API ölçütleri karşılayan en yüksek sürümü seçer.

3. Çalışma zamanı başvurusunu kaldırma

Uygulamanız MSIX paketini kullanarak tamamlandığında, çalışma zamanı başvurusunu kaldırmak için aşağıdaki işlevlerden veya yöntemlerden birini çağırın. Genellikle uygulamanız kapatma sırasında bu API'yi çağırır. Bu API, işletim sistemine MSIX paketinin gereksiz sürümlerini kaldırmanın güvenli olduğunu bildirir.

Bu API'yi çağırdığınızda, çalışma zamanı referansını eklediğinizde döndürülen tanıtıcıyı geçirmeniz gerekir.

4. Yükleme zamanı başvuruyu silin

Uygulamanız kaldırıldığında, yükleme zamanı başvurularını silmek için aşağıdaki işlevlerden veya yöntemlerden birini çağırın. Bu API, işletim sistemine, başka hiçbir uygulamanın bağımlılığı yoksa MSIX paketini kaldırmanın güvenli olduğunu bildirir.

Bu API'yi çağırdığınızda, yükleme zamanı başvurusunu oluştururken döndürülen bağımlılık kimliğini iletmeniz gerekir.

İki uygulama arasındaki farklar

Ömür yöneticisi gereksinimi (Windows Uygulama SDK'sı sınırlaması)

Bir MSIX paketine bağımlılık almak için Windows Uygulama SDK'sının dinamik bağımlılık API'sini kullandığınızda, API, Windows'a MSIX paketinin kullanımda olduğunu bildirmek ve kullanılırken çerçeveye hizmet verilmesini engellemek için başka bir yüklü paket ve çalışan işlem aracılığıyla yardım gerektirir. Bu bileşen yaşam süresi yöneticisi olarak adlandırılır.

Windows Uygulama SDK'sı, çerçeve paketi için Dinamik Bağımlılık Yaşam Süresi Yöneticisi (DDLM) adlı bir yaşam süresi yöneticisi bileşeni sağlar. Ancak, şu anda Microsoft'tan benzer bir yaşam süresi yöneticisi bileşeni sağlayan başka bir çerçeve paketi yoktur.

Windows 11'in dinamik bağımlılık API'sinde bu sınırlama yoktur.

Ana pakete başvurma ve kullanma (Windows Uygulama SDK'sı sınırlaması)

Dinamik bağımlılık her zaman bir çerçeve paketini hedefleyebilir. Ancak yalnızca Windows 11'in dinamik bağımlılık API'si ana paketlere başvurabilir ve bunları kullanabilir.

Ana paket, uygulama paketi bildirim kaynak dosyasını ( Package.appxmanifest Visual Studio'daki dosya) doğru yapılandırmış olmalıdır. Özellikle, ana paketin (hedef olan, arayan değil) <uap15:DependencyTarget>true</> ayarlaması gerekir (bkz. uap15:DependencyTarget). Bu nedenle amacı <uap15::DependencyTarget> , bir dinamik bağımlılığın bir ana paketi hedeflemesini sağlamaktır. Başka bir deyişle, ana paketin kendisini dinamik bir bağımlılık olarak kullanıma açması gerekir (framework paketleri ise bunu her zaman örtük olarak kabul eder).

Windows Uygulama SDK çerçeve paketine referans alma (Windows Uygulama SDK sınırlaması)

Paketlenmemiş bir uygulamada, Windows Uygulama SDK'sı çerçeve paketine başvurmak için Windows Uygulama SDK'sının dinamik bağımlılık API'sini kullanamazsınız (bununla birlikte diğer MSIX paketlerine başvurabileceğiniz gibi). Bunun yerine, Windows Uygulama SDK'sı tarafından sağlanan önyükleyici API'sini kullanmanız gerekir. Önyükleyici API'si, Windows Uygulama SDK'sı çerçeve paketine bağımlılıkları almak için tasarlanmış dinamik bağımlılık API'sinin özelleştirilmiş bir biçimidir. Daha fazla bilgi için bkz. Dış konumla paketlenmiş veya paketlenmemiş uygulamalar için Windows Uygulama SDK'sı çalışma zamanını kullanma.

Windows 11'in dinamik bağımlılık API'sinde bu sınırlama yoktur.