Erstellen und Konvertieren einer Quellinhalt-Gruppenzuordnung

Um Ihre App für die Streaming-Installation vorzubereiten, müssen Sie eine Inhaltsgruppenzuordnung erstellen. Dieser Artikel hilft Ihnen bei der Erstellung und Konvertierung einer Inhaltsgruppenzuordnung und gibt Ihnen einige Tipps und Tricks mit auf den Weg.

Erstellen der Quellinhaltsgruppenzuordnung

Sie müssen eine SourceAppxContentGroupMap.xml-Datei erstellen und dann entweder Visual Studio oder das Tool MakeAppx.exe verwenden, um diese Datei in ihre endgültige Version (AppxContentGroupMap.xml) zu konvertieren. Es ist möglich, einen Schritt zu überspringen, indem AppxContentGroupMap.xml von Grund auf neu erstellt werden, aber es ist empfehlenswert (und im Allgemeinen einfacher), die SourceAppxContentGroupMap.xml zu erstellen und zu konvertieren, da Platzhalter in der AppxContentGroupMap.xml nicht erlaubt sind (wenngleich sie wirklich sehr hilfreich sind).

Lassen Sie uns ein einfaches Szenario durchspielen, bei dem die Installation von App-Streaming von Vorteil ist.

Angenommen, Sie haben ein Spiel entwickelt, aber die Größe Ihrer endgültigen App beträgt über 100 GB. Das Herunterladen Ihrer App aus dem Microsoft Store wird sehr lange dauern, was lästig sein kann. Wenn Sie sich für die App-Streaming-Installation entscheiden, können Sie die Reihenfolge festlegen, in der die Dateien Ihrer App heruntergeladen werden. Indem Sie den Store anweisen, wichtige Dateien zuerst herunterzuladen, kann der Benutzer schneller mit Ihrer App arbeiten, während andere, nicht wichtige Dateien im Hintergrund heruntergeladen werden.

Hinweis

Die Verwendung der App-Streaming-Installation hängt stark von der Dateiorganisation Ihrer App ab. Es wird empfohlen, dass Sie sich so früh wie möglich Gedanken über das Inhaltslayout Ihrer App in Bezug auf die App-Streaming-Installation machen, um die Segmentierung der Dateien Ihrer App zu vereinfachen.

Zunächst erstellen wir eine SourceAppxContentGroupMap.xml-Datei.

Bevor wir uns den Einzelheiten zuwenden, 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>

Eine Inhaltsgruppenzuordnung besteht aus zwei Hauptkomponenten: dem erforderlichen Abschnitt, der die erforderliche Inhaltsgruppe enthält, und dem automatischen Abschnitt, der mehrere automatische Inhaltsgruppen enthalten kann.

Erforderliche Inhaltsgruppe

Die erforderliche Inhaltsgruppe ist eine einzelne Inhaltsgruppe innerhalb des <Required>-Elements von SourceAppxContentGroupMap.xml. Eine erforderliche Inhaltsgruppe sollte alle wesentlichen Dateien enthalten, die zum möglichst benutzerfreundlichen Starten der App erforderlich sind. Aufgrund der .NET Native-Kompilierung muss der gesamte Code (die ausführbare App-Datei) Teil der erforderlichen Gruppe sein, während Assets und andere Dateien für die automatischen Gruppen übrig bleiben.

Wenn es sich bei Ihrer App beispielsweise um ein Spiel handelt, kann die erforderliche Gruppe Dateien enthalten, die im Hauptmenü oder im Startbildschirm des Spiels verwendet werden.

Hier sehen Sie den Codeausschnitt aus unserer originalen SourceAppxContentGroupMap.xml-Beispieldatei:

<Required>
    <ContentGroup Name="Required">
        <File Name="StreamingTestApp.exe"/>
    </ContentGroup>
</Required>

Dabei sind einige wichtige Dinge zu beachten:

  • Das <ContentGroup>-Element innerhalb des <Required>-Elements muss als „erforderlich“ ausgewiesen sein. Diese Bezeichnung ist nur für die erforderliche Inhaltsgruppe reserviert und kann in der endgültigen Inhaltsgruppenzuordnung mit keiner anderen <ContentGroup> verwendet werden.
  • Es gibt nur ein <ContentGroup>. Dies ist beabsichtigt, da es nur eine Gruppe von wichtigen Dateien geben sollte.
  • In diesem Beispiel handelt es sich um eine einzelne .exe-Datei. Eine benötigte Inhaltsgruppe ist nicht auf eine Datei beschränkt; es können auch mehrere sein.

Eine einfache Möglichkeit, mit dem Schreiben dieser Datei zu beginnen, besteht darin, eine neue Seite in Ihrem bevorzugten Texteditor zu öffnen, die Datei schnell im Projektordner Ihrer Anwendung zu speichern und die neu erstellte Datei mit SourceAppxContentGroupMap.xml zu benennen.

Wichtig:

Wenn Sie eine C++-App entwickeln, müssen Sie die Dateieigenschaften Ihrer SourceAppxContentGroupMap.xml-App anpassen. Setzen Sie dieContent-Eigenschaft auf wahr und die File Type-Eigenschaft auf XML-File.

Bei der Erstellung der SourceAppxContentGroupMap.xml, ist es hilfreich, Platzhalter in Dateinamen zu verwenden. Weitere Informationen finden Sie im Abschnitt Tipps und Tricks zur Verwendung von Platzhaltern.

Wenn Sie Ihre Anwendung mit Visual Studio entwickelt haben, empfiehlt es sich, diese in die Gruppe der erforderlichen Inhalte aufzunehmen:

<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>

Das Hinzufügen des einzelnen Platzhalter-Dateinamens schließt Dateien ein, die dem Projektverzeichnis von Visual Studio hinzugefügt wurden, wie z. B. die ausführbare Datei der Anwendung oder DLLs. Die Ordner „WinMetadata“ und „Eigenschaften“ sollen die anderen von Visual Studio erstellten Ordner enthalten. Mit den Platzhaltern für Assets können Sie das Logo und die SplashScreen-Bilder auswählen, die für die Installation der App erforderlich sind.

Beachten Sie, dass Sie nicht den doppelten Platzhalter „**“ an der Wurzel der Dateistruktur verwenden können, um alle Dateien in das Projekt einzuschließen, da dies bei der Konvertierung von SourceAppxContentGroupMap.xml in das endgültige Format AppxContentGroupMap.xml fehlschlagen würde.

Es ist auch wichtig zu beachten, dass Footprint-Dateien (AppxManifest.xml, AppxSignature.p7x, resources.pri usw.) nicht in die Inhaltsgruppenzuordnung aufgenommen werden sollten. Wenn Footprint-Dateien in einem der von Ihnen angegebenen Platzhalter enthalten sind, werden sie ignoriert.

Automatische Inhaltsgruppen

Automatische Inhaltsgruppen sind die Assets, die im Hintergrund heruntergeladen werden, während der Benutzer mit den bereits heruntergeladenen Inhaltsgruppen interagiert. Diese enthalten alle zusätzlichen Dateien, die für den Start der App nicht unbedingt erforderlich sind. So können Sie beispielsweise automatische Inhaltsgruppen in verschiedene Ebenen aufteilen und jede Ebene als eigene Inhaltsgruppe definieren. Wie bereits im Abschnitt „Erforderliche Inhaltsgruppe“ erwähnt: Aufgrund der .NET Native-Kompilierung muss der gesamte Code (die ausführbare App-Datei) Teil der erforderlichen Gruppe sein, während Assets und andere Dateien für die automatischen Gruppen übrig bleiben.

Schauen wir uns die automatische Inhaltsgruppe aus unserem SourceAppxContentGroupMap.xml-Beispiel ein wenig genauer an:

<Automatic>
    <ContentGroup Name="Level2">
        <File Name="Assets\Level2\*"/>
    </ContentGroup>
    <ContentGroup Name="Level3">
        <File Name="Assets\Level3\*"/>
    </ContentGroup>
</Automatic>

Der Aufbau der automatischen Gruppe ähnelt dem der erforderlichen Gruppe, mit ein paar Ausnahmen:

  • Es gibt mehrere Inhaltsgruppen.
  • Automatische Inhaltsgruppen können eindeutige Namen haben, mit Ausnahme des Namens „erforderlich“, der für die erforderliche Inhaltsgruppe reserviert ist.
  • Automatische Inhaltsgruppen dürfen 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 zwar mit der ersten automatischen Inhaltsgruppe, die sie enthält.

Tipps und Tricks für die Verwendung von Platzhaltern

Das Dateilayout für Inhaltsgruppenzuordnungen ist immer abhängig vom Stammordner Ihres Projekts.

In unserem Beispiel werden in beiden <ContentGroup>-Elementen Platzhalter verwendet, um alle Dateien innerhalb einer Dateiebene des Typs „Assets\Level2“ oder „Assets\Level3“ abzurufen. Wenn Sie eine tiefere Ordnerstruktur verwenden, können Sie einen doppelten Platzhalter verwenden.

<ContentGroup Name="Level2">
    <File Name="Assets\Level2\**"/>
</ContentGroup>

Sie können auch Platzhalter mit Text für Dateinamen verwenden. Wenn Sie z. B. alle Dateien in Ihrem „Assets“-Ordner mit einem Dateinamen, der „Level2“ enthält, einbeziehen möchten, können Sie wie folgt vorgehen:

<ContentGroup Name="Level2">
    <File Name="Assets\*Level2*"/>
</ContentGroup>

Konvertieren von SourceAppxContentGroupMap.xml in AppxContentGroupMap.xml

Um die SourceAppxContentGroupMap.xml in die endgültige Version, AppxContentGroupMap.xml, zu konvertieren, können Sie Visual Studio 2017 oder das Befehlszeilentool MakeAppx.exe verwenden.

So konvertieren Sie Ihre Inhaltsgruppenzuordnung mit Visual Studio:

  1. Fügen Sie die SourceAppxContentGroupMap.xml zu Ihrem Projektordner hinzu
  2. Ändern sie die Build-Aktion der SourceAppxContentGroupMap.xml auf „AppxSourceContentGroupMap“ im Eigenschaftenfenster
  3. Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer
  4. Navigieren Sie zu Store – > Inhaltsgruppenzuordnungsdatei konvertieren

Wenn Sie Ihre Anwendung nicht in Visual Studio entwickelt haben oder einfach nur die Befehlszeile bevorzugen, verwenden Sie das Tool MakeAppx.exe an, um Ihre SourceAppxContentGroupMap.xml zu konvertieren.

Ein einfacher MakeAppx.exe-Befehl könnte dabei in etwa wie folgt aussehen:

MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\

Die Option /s spezifiziert den Pfad zur SourceAppxContentGroupMap.xml, und /f spezifiziert den Pfad zur AppxContentGroupMap.xml. Die letzte Option, /d, gibt an, welches Verzeichnis für die Erweiterung von Platzhaltern für Dateinamen verwendet werden soll, in diesem Fall ist es das App-Projektverzeichnis.

Weitere Informationen zu den Optionen, die Ihnen MakeAppx.exe eröffnet, erhalten Sie, wenn Sie eine Eingabeaufforderung öffnen, zu MakeAppx.exe navigieren und Folgendes eingeben:

MakeAppx convertCGM /?

Das ist alles, was Sie brauchen, um Ihr Finale für Ihre endgültige AppxContentGroupMap.xml für Ihre App fertigzustellen! Es gibt noch mehr zu tun, bevor Ihre App vollständig für den Microsoft Store bereit ist. Weitere Informationen zum Hinzufügen der Streaming-Installation zu Ihrer App finden Sie auf dieser Seite.