Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden wichtige Konzepte im Zusammenhang mit MSIX-Frameworkpaketen vorgestellt. Die Informationen in diesem Artikel enthalten nützliche Kontexte, mit denen Sie das Design und den Zweck der dynamischen Abhängigkeiten im Windows App SDK und im Windows 11-Betriebssystem besser verstehen können. Mit diesem Feature können Ihre Apps zur Laufzeit auf MSIX-Frameworkpakete verweisen und verwenden.
Frameworkpakete und das Paketdiagramm
MSIX ist ein Paketformat, das eine moderne Paket- und Bereitstellungsumgebung bietet. Außerdem bietet sie eine saubere und vertrauenswürdige Möglichkeit zum Packen von weiterverteilbaren Bibliotheken, Inhalten und Komponenten über MSIX-Frameworkpakete. Ein MSIX-Frameworkpaket ermöglicht verpackten Apps den Zugriff auf Komponenten über eine einzige freigegebene Quelle auf dem Gerät des Benutzers, anstatt sie in das App-Paket zu bündeln. Allgemeine Framework-Pakete umfassen das Windows App SDK (einschließlich WinUI3), WinUI2, VCLibs und die DirectX-Runtime.
Ab Windows 8 und weiter über Windows 10 und Windows 11 verfügt jeder Prozess über ein Paketdiagramm , das die Liste aller für die App verfügbaren Pakete bereitstellt, einschließlich Framework, Ressource, Optional und Hauptpakete. Dieses Diagramm ermöglicht der App das Laden von DLLs, Inhalten und Laufzeitklassendeklarationen, die von einem referenzierten Paket bereitgestellt werden. In der Vergangenheit war dieser Graph zur Prozesserstellungszeit festgelegt, und es gab keine Möglichkeit, ihn zur Laufzeit zu ändern.
- Bei verpackten Apps wurde das Diagramm basierend auf den Paketabhängigkeiten initialisiert, die im PackageDependency-Element im App-Paketmanifest deklariert wurden. Beim Erstellen einer verpackten App wurde dies in der Regel während des Erstellungsprozesses basierend auf Ihren Projektbezügen und Abhängigkeiten durchgeführt.
- Bei entpackten Apps war das Paketdiagramm leer und konnte nicht geändert werden. Daher waren entpackte Apps auf die standardmäßige DLL-Suchreihenfolge beschränkt und konnten nicht auf Frameworkpakete zugreifen.
Diese Einschränkung des statischen Paketdiagramms wird mit der Einführung der dynamischen Abhängigkeiten sowohl im Windows App SDK als auch in Windows 11 aufgehoben. Entwickler können dynamische Abhängigkeiten verwenden, um zur Laufzeit von ihren Apps auf MSIX-Frameworkpakete zu verweisen und sie zu verwenden. Dynamische Abhängigkeiten entfernen die Einschränkung des statischen Paketdiagramms aus Apps, und Entwickler können entscheiden, wie sie Frameworkpakete nutzen möchten.
Primäre Szenarien für dynamische Abhängigkeiten
Obwohl dynamische Abhängigkeiten es jeder App ermöglichen, zur Laufzeit eine Paketframeworkabhängigkeit hinzuzufügen, ist dieses Feature in erster Linie für Apps gedacht, die mit externem Speicherort oder entpackten Apps verpackt sind. Verpackte Apps können weiterhin statische Abhängigkeiten über das PackageDependency-Element im Paketmanifest hinzufügen.
- Die meisten Entwickler verwenden dynamische Abhängigkeiten nur, um auf das Windows App SDK-Framework-Paket in einem Paket mit externem Speicherort oder in einer entpackten App zu verweisen, sodass die App APIs aufrufen kann, die von der Windows App SDK-Laufzeit bereitgestellt werden. Weitere Informationen zu diesem Szenario finden Sie unter Verwenden der Windows App SDK-Laufzeit für Apps, die mit externem Speicherort verpackt oder entpackt wurden.
- In einigen Fällen möchten Entwickler möglicherweise dynamische Abhängigkeiten verwenden, um auf ein anderes Frameworkpaket (außer dem Windows App SDK-Frameworkpaket) aus einer entpackten App zu verweisen, z. B. das Frameworkpaket für WinUI2 oder die DirectX-Runtime. Weitere Informationen zu diesem Szenario finden Sie unter Verwenden der dynamischen Abhängigkeits-API, um zur Laufzeit auf MSIX-Pakete zu verweisen.
Wartungsmodell für Frameworkpakete
Das Feature für dynamische Abhängigkeiten bewahrt die Integrität der Wartungspipeline für das Framework-Paket, auf das während der Laufzeit verwiesen und das dynamisch genutzt wird.
MSIX Framework-Pakete unterstützen die Wartung in einem parallelen Modell, d. h. jede Version wird in einem eigenen separaten Versionsordner installiert. Dadurch können Anwendungen weiterhin auf dem Laufenden bleiben, auch wenn eine neuere App eine neuere Version des Frameworkpakets installiert. Das Betriebssystem verfügt über Deinstallationslogik, wenn ältere Versionen eines bestimmten Frameworkpakets gelöscht werden sollen, basierend auf dem Vorhandensein von Installationszeitverweise und Laufzeitverweise für das Paket.
- Wenn eine App installiert ist, kann sie einen Installationszeitverweis auf ein Framework-Paket erstellen. Diese Referenz informiert das Betriebssystem, dass die App von dem angegebenen Frameworkpaket abhängig ist, sodass das Betriebssystem das Frameworkpaket nicht deinstalliert, während die App installiert ist.
- Wenn eine App APIs oder Inhalte in einem Frameworkpaket verwenden muss, kann sie dem Frameworkpaket einen Laufzeitverweis hinzufügen. Diese Referenz informiert das Betriebssystem darüber, dass das Frameworkpaket aktiv verwendet wird und alle Versionsupdates parallel behandelt werden können. Wenn eine neue Version des Frameworkpakets installiert ist, aber eine ausgeführte App eine ältere Version verwendet, kann das Betriebssystem die ältere Version erst entfernen, wenn alle Laufzeitverweise auf die ältere Version entfernt werden.
Zum Beispiel, in folgendem Szenario:
- App A wird ausgeführt und verwendet Version 1.0.0.0 eines bestimmten Frameworkpakets.
- App B ist installiert und hat eine Abhängigkeit von Version 1.0.0.1 desselben Frameworkpakets.
In diesem Szenario werden beide Versionen des Frameworkpakets installiert und von App A und App B verwendet. Wenn App A jedoch vom Benutzer geschlossen und dann neu gestartet wird, übernimmt sie die neuere Version 1.0.0.1 des Frameworkpakets. Zu diesem Zeitpunkt ist die Laufzeitreferenzanforderung für Version 1.0.0.0 des Frameworkpakets nicht mehr gültig, und das Betriebssystem kann die Version 1.0.0.0 sicher entfernen. Wenn App A und App B vom Benutzer deinstalliert werden, ist die Installationszeitreferenzanforderung nicht mehr gültig und es ist sicher, dass das Betriebssystem das Frameworkpaket vollständig entfernt.
Bei verpackten Apps, die das PackageDependency-Element verwenden, um statische Verweise auf Frameworkpakete anzugeben, werden die Installationszeitverweise für Frameworkpakete vom Betriebssystem nachverfolgt, wenn die App installiert oder deinstalliert wird. Für Laufzeitverweise, die mithilfe der Funktion für dynamische Abhängigkeiten verwaltet werden, erkennt das Betriebssystem, wann eine verpackte App ausgeführt wird, und verhindert, dass die in Gebrauch befindlichen Framework-Pakete entfernt werden, wenn ein neueres verfügbar ist.
Zugehörige Themen
- Verwenden der Windows App SDK-Runtime für gepackte Apps mit externem Speicherort oder nicht gepackte Apps
- Verwenden Sie die dynamische Abhängigkeits-API, um bei der Laufzeit auf MSIX-Pakete zu verweisen
- Windows App SDK-Bereitstellungshandbuch für frameworkabhängige Apps, die mit externem Speicherort verpackt oder entpackt wurden
- Laufzeitarchitektur für das Windows App SDK
- Lernprogramm: Verwenden der Bootstrapper-API in einer App, die mit externem Speicherort verpackt oder entpackt wird, die das Windows App SDK verwendet
Windows developer