Erstellen und Konvertieren einer Quellinhalt-Gruppenzuordnung
Um Ihre App für die Streaminginstallation vorzubereiten, müssen Sie eine Inhaltsgruppenzuordnung erstellen. Dieser Artikel hilft Ihnen bei der Erstellung und Konvertierung einer Inhaltsgruppenzuordnung, während Sie einige Tipps und Tricks auf dem Weg bereitstellen.
Erstellen der Quellinhaltsgruppenzuordnung
Sie müssen eine SourceAppxContentGroupMap.xml
Datei erstellen und dann entweder Visual Studio oder das MakeAppx.exe Tool verwenden, um diese Datei in die endgültige Version zu konvertieren: AppxContentGroupMap.xml
Es ist möglich, einen Schritt zu überspringen, indem Sie die AppxContentGroupMap.xml
Von Grund auf neu erstellen, aber es wird empfohlen (und allgemein einfacher), dies SourceAppxContentGroupMap.xml
zu erstellen und zu konvertieren, da Wildcards nicht in den AppxContentGroupMap.xml
(und sie sind wirklich hilfreich) sind.
Sehen wir uns ein einfaches Szenario an, in dem die App-Streaminginstallation vorteilhaft ist.
Angenommen, Sie haben ein Spiel erstellt, aber die Größe Ihrer endgültigen App beträgt über 100 GB. Dies wird lange dauern, um aus dem Microsoft Store herunterzuladen, was unannelich sein kann. Wenn Sie die App-Streaminginstallation verwenden möchten, können Sie die Reihenfolge angeben, in der die Dateien Ihrer App heruntergeladen werden. Indem Sie den Store mitteilen, zuerst wichtige Dateien herunterzuladen, kann der Benutzer schneller mit Ihrer App interagieren, während andere nicht wesentliche Dateien im Hintergrund heruntergeladen werden.
Hinweis
Die Verwendung der App-Streaminginstallation basiert stark auf der Dateiorganisation Ihrer App. Es wird empfohlen, das Inhaltslayout Ihrer App im Hinblick auf die App-Streaminginstallation so schnell wie möglich zu berücksichtigen, damit die Segmentierung der App-Dateien einfacher wird.
Zunächst erstellen wir eine SourceAppxContentGroupMap.xml
Datei.
Bevor wir uns mit den Details beschäftigen, finden Sie hier ein Beispiel für eine einfache, vollständige SourceAppxContentGroupMap.xml
Datei:
<?xml version="1.0" encoding="utf-8"?>
<ContentGroupMap xmlns="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap"
xmlns:s="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap">
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
</ContentGroupMap>
Es gibt zwei Hauptkomponenten für eine Inhaltsgruppenzuordnung: den erforderlichen Abschnitt, der die erforderliche Inhaltsgruppe enthält, und den automatischen Abschnitt, der mehrere automatische Inhaltsgruppen enthalten kann.
Erforderliche Inhaltsgruppe
Die erforderliche Inhaltsgruppe ist eine einzelne Inhaltsgruppe innerhalb des <Required>
Elements der SourceAppxContentGroupMap.xml
. Eine erforderliche Inhaltsgruppe sollte alle wichtigen Dateien enthalten, die zum Starten der App mit der minimalen Benutzererfahrung erforderlich sind. Aufgrund .NET Native Kompilierung muss der gesamte Code (die ausführbare Anwendung) Teil der erforderlichen Gruppe sein und Ressourcen und andere Dateien für die automatischen Gruppen verlassen.
Wenn Ihre App beispielsweise ein Spiel ist, kann die erforderliche Gruppe Dateien enthalten, die im Hauptmenü oder im Startbildschirm des Spiels verwendet werden.
Hier sehen Sie den Codeausschnitt aus unserer ursprünglichen SourceAppxContentGroupMap.xml
Beispieldatei:
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
Hier sind einige wichtige Punkte zu beachten:
- Das
<ContentGroup>
Innerhalb des<Required>
Elements muss "Erforderlich" genannt werden. Dieser Name ist nur für die erforderliche Inhaltsgruppe reserviert und kann nicht mit anderen<ContentGroup>
in der endgültigen Inhaltsgruppenzuordnung verwendet werden. - Es gibt nur eine
<ContentGroup>
. Dies ist beabsichtigt, da nur eine Gruppe von wichtigen Dateien vorhanden sein sollte. - Die Datei in diesem Beispiel ist eine einzelne
.exe
Datei. Eine erforderliche Inhaltsgruppe ist nicht auf eine Datei beschränkt, es kann mehrere geben.
Eine einfache Möglichkeit, diese Datei zu schreiben, besteht darin, eine neue Seite in Ihrem bevorzugten Text-Editor zu öffnen, eine schnelle "Speichern unter" Ihrer Datei in den Projektordner Ihrer App zu führen und Ihre neu erstellte Datei zu benennen: SourceAppxContentGroupMap.xml
Wichtig
Wenn Sie eine C++-App entwickeln, müssen Sie die Dateieigenschaften Ihrer SourceAppxContentGroupMap.xml
App anpassen. Legen Sie die Content
Eigenschaft auf "true" und die File Type
Eigenschaft auf "XML-Datei" fest.
Wenn Sie die SourceAppxContentGroupMap.xml
Datei erstellen, ist es hilfreich, die Verwendung von Wildcards in Dateinamen zu nutzen, weitere Informationen finden Sie im Abschnitt Tipps und Tricks für die Verwendung von Wildcards.
Wenn Sie Ihre App mithilfe von Visual Studio entwickelt haben, empfiehlt es sich, dies in Ihre erforderliche Inhaltsgruppe aufzunehmen:
<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>
Das Hinzufügen des einzelnen Wildcarddateinamens enthält Dateien, die aus Visual Studio dem Projektverzeichnis hinzugefügt wurden, z. B. die ausführbare App oder DLLs. Die Ordner "WinMetadata" und "Eigenschaften" müssen die anderen Ordner enthalten, Visual Studio generiert werden. Die Ressourcen-Wildcards sind die Logo- und SplashScreen-Bilder auszuwählen, die für die Installation der App erforderlich sind.
Beachten Sie, dass Sie die doppelte Freihandkarte "**" nicht im Stammverzeichnis der Dateistruktur verwenden können, um jede Datei im Projekt einzuschließen, da dies beim Konvertieren SourceAppxContentGroupMap.xml
in das Endgültige AppxContentGroupMap.xml
fehlschlägt.
Es ist auch wichtig zu beachten, dass Speicherbedarfsdateien (AppxManifest.xml, AppxSignature.p7x, resources.pri usw.) nicht in der Inhaltsgruppenzuordnung enthalten sein sollten. Wenn Die Platzhalterdateien in einem der von Ihnen angegebenen Platzhalterdateinamen enthalten sind, werden sie ignoriert.
Automatische Inhaltsgruppen
Automatische Inhaltsgruppen sind die Ressourcen, die im Hintergrund heruntergeladen werden, während der Benutzer mit den bereits heruntergeladenen Inhaltsgruppen interagiert. Diese enthalten zusätzliche Dateien, die zum Starten der App nicht erforderlich sind. Sie können z. B. automatische Inhaltsgruppen auf verschiedenen Ebenen aufteilen und jede Ebene als separate Inhaltsgruppe definieren. Wie im abschnitt für die erforderliche Inhaltsgruppe erwähnt: Aufgrund .NET Native Kompilierung muss der gesamte Code (die ausführbare Anwendung) Teil der erforderlichen Gruppe sein und Ressourcen und andere Dateien für die automatischen Gruppen verlassen.
Sehen wir uns die automatische Inhaltsgruppe aus unserem SourceAppxContentGroupMap.xml
Beispiel genauer an:
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
Das Layout der automatischen Gruppe ähnelt ziemlich der erforderlichen Gruppe, mit einigen Ausnahmen:
- Es gibt mehrere Inhaltsgruppen.
- Automatische Inhaltsgruppen können eindeutige Namen mit Ausnahme des Namens "Erforderlich" haben, der für die erforderliche Inhaltsgruppe reserviert ist.
- Automatische Inhaltsgruppen können keine Dateien aus der erforderlichen Inhaltsgruppe enthalten.
- Eine automatische Inhaltsgruppe kann Dateien enthalten, die sich auch in anderen automatischen Inhaltsgruppen befinden. Die Dateien werden nur einmal heruntergeladen und mit der ersten automatischen Inhaltsgruppe heruntergeladen, die sie enthält.
Tipps und Tricks für die Verwendung von Wildcards
Das Dateilayout für Inhaltsgruppenzuordnungen ist immer relativ zum Projektstammordner.
In unserem Beispiel werden Wildcards in beiden <ContentGroup>
Elementen verwendet, um alle Dateien innerhalb einer Dateiebene von "Assets\Level2" oder "Assets\Level3" abzurufen. Wenn Sie eine tiefere Ordnerstruktur verwenden, können Sie die doppelte Wildcard verwenden:
<ContentGroup Name="Level2">
<File Name="Assets\Level2\**"/>
</ContentGroup>
Sie können auch Wildcards mit Text für Dateinamen verwenden. Wenn Sie beispielsweise jede Datei in Ihren Ordner "Assets" mit einem Dateinamen einschließen möchten, der "Level2" enthält, können Sie etwa folgendes verwenden:
<ContentGroup Name="Level2">
<File Name="Assets\*Level2*"/>
</ContentGroup>
Konvertieren SourceAppxContentGroupMap.xml in AppxContentGroupMap.xml
Um die SourceAppxContentGroupMap.xml
endgültige Version zu konvertieren, AppxContentGroupMap.xml
können Sie Visual Studio 2017 oder das BefehlszeilentoolMakeAppx.exe verwenden.
So konvertieren Sie ihre Inhaltsgruppenzuordnung mithilfe von Visual Studio:
- Hinzufügen des
SourceAppxContentGroupMap.xml
Projektordners - Ändern der Buildaktion der
SourceAppxContentGroupMap.xml
"AppxSourceContentGroupMap" in der Eigenschaftenfenster - Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer.
- Navigieren Sie zu Store –> Inhaltsgruppenzuordnungsdatei konvertieren
Wenn Sie Ihre App nicht in Visual Studio entwickelt haben, oder wenn Sie einfach die Befehlszeile verwenden möchten, verwenden Sie das toolMakeAppx.exe, um Ihre SourceAppxContentGroupMap.xml
Zu konvertieren.
Ein einfacher MakeAppx.exe Befehl sieht wie folgt aus:
MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\
Die Option /s gibt den Pfad zum Pfad an SourceAppxContentGroupMap.xml
, und /f gibt den Pfad zum AppxContentGroupMap.xml
. Die endgültige Option /d gibt an, welches Verzeichnis zum Erweitern von Dateinamen-Wildcards verwendet werden soll, in diesem Fall ist es das App-Projektverzeichnis.
Weitere Informationen zu Optionen, die Sie mit MakeAppx.exeverwenden können, öffnen Sie eine Eingabeaufforderung, navigieren Sie zu MakeAppx.exe und geben Sie folgendes ein:
MakeAppx convertCGM /?
Das ist alles, was Sie für AppxContentGroupMap.xml
Ihre App benötigen! Es gibt noch mehr zu tun, bevor Ihre App vollständig für die Microsoft Store bereit ist. Weitere Informationen zum Hinzufügen der Streaminginstallation zu Ihrer App finden Sie auf dieser Seite.