Einführung in Bestandspakete

Wichtig

Wenn Sie ihre App an die Store übermitteln möchten, müssen Sie sich an Windows Entwicklersupport wenden und die Genehmigung für die Verwendung von Bestandspaketen erhalten.

Asset-Pakete sind eine Art von Paket, die als zentraler Speicherort für die gemeinsamen Dateien einer Anwendung fungieren – wodurch die Notwendigkeit für duplizierte Dateien in ihren Architekturpaketen effektiv beseitigt wird. Ressourcenpakete ähneln Ressourcenpaketen, in denen sie beide so konzipiert sind, dass statische Inhalte enthalten, die für die Ausführung Ihrer App erforderlich sind, aber unterschiedlich sind, dass alle Ressourcenpakete immer heruntergeladen werden, unabhängig von der Systemarchitektur, Sprache oder Anzeigeskala des Benutzers.

Asset Package Bundle Diagram

Da Ressourcenpakete alle Architektur, Sprache und Skalierung agnostischer Dateien enthalten, führt das Nutzen von Bestandspaketen zu einer reduzierten gesamt verpackten App-Größe (da diese Dateien nicht mehr dupliziert sind), wodurch Sie die lokale Speicherplatznutzung für große Apps verwalten und die Pakete Ihrer App allgemein verwalten können.

Wie wirken sich Ressourcenpakete auf die Veröffentlichung aus?

Der offensichtlichste Vorteil von Asset-Paketen ist die reduzierte Größe von verpackten Apps. Kleinere App-Pakete beschleunigen den Veröffentlichungsprozess der App, indem der Store weniger Dateien verarbeiten kann. Dies ist jedoch nicht der wichtigste Vorteil von Ressourcenpaketen.

Wenn ein Objektpaket erstellt wird, können Sie angeben, ob das Paket ausgeführt werden soll. Da Asset-Pakete nur architekturagnostische Dateien enthalten sollten, enthalten sie in der Regel keine .dll oder .exe Dateien, sodass Ressourcenpakete normalerweise nicht ausgeführt werden müssen. Die Bedeutung dieses Unterschieds besteht darin, dass während des Veröffentlichungsprozesses alle ausführbaren Pakete gescannt werden müssen, um sicherzustellen, dass sie keine Schadsoftware enthalten, und dieser Scanvorgang dauert länger für größere Pakete. Wenn jedoch ein Paket als nicht ausführbare Datei festgelegt ist, stellt die Installation der App sicher, dass Dateien, die in diesem Paket enthalten sind, nicht ausgeführt werden können. Diese Garantie beseitigt die Notwendigkeit einer vollständigen Paketüberprüfung und reduziert die Schadsoftware-Scanzeit während der Veröffentlichung der App (und auch für Updates), wodurch die Veröffentlichung für Apps, die Ressourcenpakete verwenden, erheblich schneller veröffentlicht wird. Beachten Sie, dass flache Paket-App-Pakete auch verwendet werden müssen, um diesen Veröffentlichungsvorteil zu erhalten, da dies die Store ermöglicht, jede APPX- oder MSIX-Paketdatei parallel zu verarbeiten.

Sollte ich Ressourcenpakete verwenden?

Durch das Aktualisieren der Dateistruktur Ihrer App, um die Verwendung von Bestandspaketen zu nutzen, können konkrete Vorteile entstehen: reduzierte Paketgröße und schlankere Entwicklungs-Iterationen. Wenn Ihre Architekturpakete alle häufig verwendete Dateien enthalten oder aus nicht ausgeführten Dateien bestehen, empfiehlt es sich dringend, die zusätzliche Zeit für die Konvertierung in die Verwendung von Ressourcenpaketen zu investieren.

Es sollte jedoch darauf hingewiesen werden, dass Ressourcenpakete keine Mittel sind, um App-Inhalte optional zu erreichen. Objektpaketdateien sind nicht optional und werden unabhängig von der Architektur, Sprache oder Skalierung des Zielgeräts immer heruntergeladen – alle optionalen Inhalte, die Ihre App unterstützen soll, sollten mithilfe optionaler Pakete implementiert werden.

So erstellen Sie ein Objektpaket

Die einfachste Möglichkeit zum Erstellen von Bestandspaketen ist die Verwendung des Verpackungslayouts. Ressourcenpakete können jedoch auch manuell mithilfe von MakeAppx.exe erstellt werden. Um anzugeben, welche Dateien in das Objektpaket aufgenommen werden sollen, müssen Sie eine "Zuordnungsdatei" erstellen. In diesem Beispiel lautet die einzige Datei im Objektpaket "Video.mp4", aber alle Dateien des Objektpakets sollten hier aufgelistet werden. Beachten Sie, dass der ResourceDimensions-Bezeichner in ResourceMetadata für Ressourcenpakete nicht angegeben wird (im Vergleich zu einer Zuordnungsdatei für Ressourcenpakete).

[ResourceMetadata]
"ResourceId"        "Videos"

[Files]
"Video.mp4"         "Video.mp4"

Verwenden Sie einen dieser Befehle, um das Objektpaket mithilfe von MakeAppx.exe (für MSIX und .appx) zu erstellen.

MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.appx
MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.msix

Es sollte hier angegeben werden, dass alle Dateien, auf die in appxManifest (die Logodateien) verwiesen wird, nicht in Objektpakete verschoben werden können – diese Dateien müssen über Architekturpakete dupliziert werden.

Ressourcenpakete sollten auch keine ressourcen.pri enthalten; MRT kann nicht verwendet werden, um auf Ressourcenpaketdateien zuzugreifen. Weitere Informationen dazu, wie Sie auf Ressourcenpaketdateien zugreifen und warum Ressourcenpakete Ihre App auf einem NTFS-Laufwerk installiert werden müssen, finden Sie unter "Entwickeln mit Ressourcenpaketen und Paketfaltung".

Um zu steuern, ob ein Objektpaket ausgeführt werden darf oder nicht, können Sie uap6:AllowExecution im Properties-Element des AppxManifest verwenden, sie müssen auch uap6 zum Paketelement der obersten Ebene hinzufügen, um Folgendes zu werden:

<Package IgnorableNamespaces="uap uap6" 
xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6" 
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

Wenn nicht angegeben, ist der Standardwert für AllowExecution"true " – legen Sie ihn für Objektpakete ohne ausführbare Dateien auf "false " fest, um die Veröffentlichung schneller zu machen.