Erstellen und Konvertieren einer Quellinhalt-Gruppenzuordnung

Um Ihre App für die Streaming-Installation bereit zu machen, müssen Sie eine Inhaltsgruppenzuordnung erstellen. Dieser Artikel hilft Ihnen bei der Erstellung und Konvertierung einer Inhaltsgruppenzuordnung und bietet dabei einige Tipps und Tricks.

Erstellen der Quellinhaltsgruppenzuordnung

Sie müssen eine Datei erstellen und dann entweder Visual Studio oder dasMakeAppx.exe-Tool verwenden, um diese Datei in die endgültige SourceAppxContentGroupMap.xml Version zu konvertieren: AppxContentGroupMap.xml . Es ist möglich, einen Schritt zu überspringen, indem Sie die von Grund auf neu erstellen. Es wird jedoch empfohlen (und im Allgemeinen einfacher), die zu erstellen und zu konvertieren, da Platzhalter in der nicht zulässig sind (und sehr hilfreich AppxContentGroupMap.xml SourceAppxContentGroupMap.xml AppxContentGroupMap.xml sind).

Sehen wir uns ein einfaches Szenario an, in dem die App-Streaming-Installation von Vorteil ist.

Sie haben ein Spiel erstellt, aber die Größe Ihrer endgültigen App beträgt mehr als 100 GB. Das Herunterladen aus dem Microsoft Store kann sehr lange dauern. Wenn Sie die App-Streaming-Installation verwenden möchten, können Sie die Reihenfolge angeben, in der die Dateien Ihrer App heruntergeladen werden. Indem der Store anfing, zuerst wichtige Dateien herunterzuladen, kann der Benutzer früher mit Ihrer App interagieren, 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 bald 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.

Im Folgenden finden Sie ein Beispiel für eine einfache, vollständige Datei, bevor wir uns den Details SourceAppxContentGroupMap.xml endnen:

<?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 Abschnitt automatic, der mehrere automatische Inhaltsgruppen enthalten kann.

Erforderliche Inhaltsgruppe

Die erforderliche Inhaltsgruppe ist eine einzelne Inhaltsgruppe innerhalb <Required> des -Elements von SourceAppxContentGroupMap.xml . Eine erforderliche Inhaltsgruppe sollte alle wichtigen Dateien enthalten, die zum Starten der App mit minimaler Benutzerfreundlichkeit erforderlich sind. Aufgrund .NET Native Kompilierung muss der ganze Code (die ausführbare Datei der Anwendung) Teil der erforderlichen Gruppe sein, damit Ressourcen und andere Dateien für die automatischen Gruppen erhalten sind.

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

Hier ist der Codeausschnitt aus unserer ursprünglichen SourceAppxContentGroupMap.xml Beispieldatei:

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

Hier sind einige wichtige Dinge zu beachten:

  • Der <ContentGroup> innerhalb des Elements muss <Required> den Namen "Required" haben. Dieser Name ist nur für die erforderliche Inhaltsgruppe reserviert und kann nicht zusammen mit anderen in der endgültigen <ContentGroup> Inhaltsgruppenzuordnung verwendet werden.
  • Es gibt nur eine <ContentGroup> . Dies ist beabsichtigt, da es nur eine Gruppe wichtiger Dateien geben sollte.
  • Die Datei in diesem Beispiel ist eine einzelne .exe Datei. Eine erforderliche Inhaltsgruppe ist nicht auf eine Datei beschränkt, es können mehrere sein.

Eine einfache Möglichkeit, mit dem Schreiben dieser Datei zu beginnen, besteht im Öffnen einer neuen Seite in Ihrem bevorzugten Text-Editor, dem schnellen Speichern unter Ihrer Datei im Projektordner Ihrer App und dem Namen Ihrer neu erstellten Datei: SourceAppxContentGroupMap.xml .

Wichtig

Wenn Sie eine C++-App entwickeln, müssen Sie die Dateieigenschaften Ihrer SourceAppxContentGroupMap.xml anpassen. Legen Sie die Content -Eigenschaft auf true und die File Type -Eigenschaft auf XML-Datei fest.

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

Wenn Sie Ihre App mithilfe von Visual Studio entwickelt haben, wird empfohlen, dies in die erforderliche Inhaltsgruppe zu übernehmen:

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

Das Hinzufügen des Namens der einzelnen Platzhalterdatei umfasst Dateien, die dem Projektverzeichnis von Visual Studio hinzugefügt werden, z. B. die ausführbare Datei der App oder DLLs. Die Ordner WinMetadata und Properties enthalten die anderen Ordner, die Visual Studio werden. Mit den Platzhaltern Assets werden die Logo- und SplashScreen-Images ausgewählt, die für die Installation der App erforderlich sind.

Beachten Sie, dass Sie nicht die doppelte Platzhalterkarte "**" im Stammverzeichnis der Dateistruktur verwenden können, um jede Datei in das Projekt ein-/ausderherzustellen, da dies fehlschlägt, wenn versucht wird, in den endgültigen zu SourceAppxContentGroupMap.xml AppxContentGroupMap.xml konvertieren.

Es ist auch wichtig zu beachten, dass Speicherbedarfsdateien (AppxManifest.xml, AppxSignature.p7x, resources.pri usw.) nicht in der Inhaltsgruppenzuordnung enthalten sein sollten. Wenn Speicherbedarfsdateien 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 alle zusätzlichen Dateien, die zum Starten der App nicht erforderlich sind. Beispielsweise können Sie automatische Inhaltsgruppen in auf verschiedene Ebenen aufteilen und jede Ebene als separate Inhaltsgruppe definieren. Wie im Abschnitt "Erforderliche Inhaltsgruppe" erwähnt: Aufgrund der .NET Native-Kompilierung muss der ganze Code (die ausführbare Anwendungsdatei) Teil der erforderlichen Gruppe sein und Ressourcen und andere Dateien für die automatischen Gruppen belässt.

Sehen wir uns die automatische Inhaltsgruppe aus unserem Beispiel SourceAppxContentGroupMap.xml 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 bis auf einige Ausnahmen der erforderlichen Gruppe:

  • Es gibt mehrere Inhaltsgruppen.
  • Automatische Inhaltsgruppen können eindeutige Namen haben, mit Ausnahme des Namens "Required", 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 zur Verwendung von Platzhaltern

Das Dateilayout für Inhaltsgruppenzuordnungen ist immer relativ zum Stammordner Ihres Projekts.

In unserem Beispiel werden In beiden Elementen Platzhalter verwendet, um alle Dateien innerhalb einer Dateiebene von <ContentGroup> "Assets\Level2" oder "Assets\Level3" abzurufen. Wenn Sie eine tiefere Ordnerstruktur verwenden, können Sie den 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. jede Datei mit einem Dateinamen, der "Level2" enthält, in Ihren Ordner "Assets" eingeben möchten, können Sie etwa folgendes verwenden:

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

Konvertieren SourceAppxContentGroupMap.xml in AppxContentGroupMap.xml

Zum Konvertieren von in die endgültige Version , können Sie Visual Studio 2017 oder dasMakeAppx.exeSourceAppxContentGroupMap.xml AppxContentGroupMap.xml Befehlszeilentool verwenden.

So verwenden Sie Visual Studio, um Ihre Inhaltsgruppenzuordnung zu konvertieren:

  1. Fügen Sie dem SourceAppxContentGroupMap.xml Projektordner hinzu.
  2. Ändern Sie die Buildaktion von SourceAppxContentGroupMap.xml in "AppxSourceContentGroupMap" im Eigenschaftenfenster
  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt.
  4. Navigieren Sie zu Store -> Inhaltsgruppenzuordnungsdatei konvertieren.

Wenn Sie Ihre App nicht in Visual Studio entwickelt haben oder nur die Befehlszeile verwenden möchten, verwenden Sie das toolMakeAppx.exe, um Zu SourceAppxContentGroupMap.xml konvertieren.

Ein einfacher MakeAppx.exe kann in etwa wie der folgenden aussehen:

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

Die Option /s gibt den Pfad zu SourceAppxContentGroupMap.xml an, und /f gibt den Pfad zum AppxContentGroupMap.xml an. Die letzte Option /d gibt an, welches Verzeichnis zum Erweitern von Platzhaltern für Dateinamen verwendet werden soll. In diesem Fall ist dies das App-Projektverzeichnis.

Um weitere Informationen zu Optionen zu erhalten, die Sie mit MakeAppx.exe können, öffnen Sie eine Eingabeaufforderung, navigieren Sie zuMakeAppx.exe und geben Sie Ein:

MakeAppx convertCGM /?

Das ist alles, was Sie benötigen, um Ihre endgültige App AppxContentGroupMap.xml fertig zu machen! Es gibt noch mehr zu tun, bevor Ihre App vollständig für die Anwendung bereit Microsoft Store. Weitere Informationen zum vollständigen Prozess des Hinzufügens der Streaming-Installation zu Ihrer App finden Sie in diesem Blogbeitrag.