Optionale Pakete und die Erstellung zugehöriger Sets

Optionale Pakete enthalten Inhalte, die in ein Hauptpaket integriert werden können. Diese sind nützlich für herunterladbare Inhalte (DLC), das Aufteilen einer großen App für Größenbeschränkungen oder für den Versand zusätzlicher Inhalte, die von Ihrer ursprünglichen App getrennt sind. Weitere Informationen zu optionalen Paketen finden Sie im Blogbeitrag: Extend your application using optional packages (Erweitern Ihrer Anwendung mit optionalen Paketen).

Verwandte Sätze sind eine Erweiterung optionaler Pakete. Verwandte Sätze ermöglichen es Ihnen, einen strengen Satz von Versionen für Hauptpakete und optionale Pakete zu erzwingen. Verknüpfte Gruppen können andere Herausgeber als die Haupt-App haben, wenn sie außerhalb des Store. Weitere Informationen zu verwandten Sätzen finden Sie im Blogbeitrag: Tools to create a related set (Tools zum Erstellen eines zugehörigen Sätze).

Optionale Pakete und verwandte Sätze werden alle im MSIX-Container der Haupt-App ausgeführt.

Voraussetzungen

  • Visual Studio 2019 oder Visual Studio 2017 (Version 15.1 oder höher)
  • Windows 10, Version 1703 oder höher
  • Windows 10, Version 1703 SDK oder höher

Alle neuesten Entwicklungstools finden Sie unter Downloads und Tools für Windows 10.

Hinweis

Um eine App, die optionale Pakete und/oder verwandte Sätze verwendet, an die Microsoft Store senden zu können, benötigen Sie die Berechtigung . Optionale Pakete und verwandte Sätze können für Branchen- oder Unternehmens-Apps ohne Partner Center-Berechtigung verwendet werden, wenn sie nicht an die Store. Unter Windows Entwicklersupport erhalten Sie die Berechtigung zum Übermitteln einer App, die optionale Pakete und verwandte Sätze verwendet.

Codebeispiel

Während Sie diesen Artikel lesen, wird empfohlen, zusammen mit dem optionalen Paketcodebeispiel auf GitHub ein praktisches Verständnis der Funktionsweise optionaler Pakete und zugehöriger Sätze in Visual Studio.

Optionale Pakete

Um ein optionales Paket in Visual Studio erstellen zu können, müssen Sie:

  1. Stellen Sie sicher, dass die Mindestversion der Zielplattform Ihrer App auf 10.0.15063.0 oder höher festgelegt ist.
  2. Öffnen Sie die Datei in Ihrem Hauptpaketprojekt Package.appxmanifest . Navigate to the "Packaging" tab and make a note of your package family name, which is everything before the "_" character.
  3. Klicken Sie in Ihrem optionalen Paketprojekt mit der rechten Package.appxmanifest Maustaste > auf , und wählen Öffnen mit XML-Editor (Text) aus.
  4. Suche das <Dependencies>-Element in der Datei. Fügen Sie Folgendes hinzu, und ersetzen [MainPackageDependency] Sie durch den Namen Ihrer Paketfamilie aus Schritt 2. Dadurch wird angegeben, dass Ihr optionales Paket von Ihrem Hauptpaket abhängig ist.
    <uap3:MainPackageDependency Name="[MainPackageDependency]"/>
    

Hinweis

Wenn Sie ein optionales Paket von einem anderen Herausgeber erstellen möchten, müssen Sie den Herausgeber der Hauptanwendung angeben, falls sich diese unterscheiden. Wie so <uap4:MainPackageDependency Name="Main_app" Publisher="CN=Contoso..." />. Dies funktioniert nicht, wenn Sie die Veröffentlichung im Store.

Nachdem Sie ihre Paketabhängigkeiten in den Schritten 1 bis 4 eingerichtet haben, können Sie die Entwicklung wie gewohnt fortsetzen. Weitere Informationen finden Sie im Blogbeitrag: Erstellen Ihres ersten optionalen Pakets.

Visual Studio kann so konfiguriert werden, dass Ihr Hauptpaket bei jeder Bereitstellung eines optionalen Pakets erneut bereitgestellt wird. So legen Sie die Buildabhängigkeit in Visual Studio fest:

  1. Klicken Sie mit der rechten Maustaste auf das optionale Paketprojekt, und wählen Sie Abhängigkeiten erstellen > Project Abhängigkeiten... aus.
  2. Überprüfen Sie das Hauptpaketprojekt, und wählen Sie "OK" aus.

Jedes Mal, wenn Sie F5 eingeben oder ein optionales Paketprojekt erstellen, erstellt Visual Studio zuerst das Hauptpaketprojekt. Dadurch wird sichergestellt, dass Ihr Hauptprojekt und optionale Projekte synchronisiert sind.

Ein verwandter Satz besteht aus einem Hauptpaket und einem optionalen Paket, die eng über Metadaten gekoppelt sind, die in der APPXBUNDLE- oder MSIXBUNDLE-Datei des Hauptpakets angegeben sind. Diese Metadaten verknüpft das Hauptpaket mit dem optionalen Paket (unter Verwendung des Namens der APPXBUNDLE-Datei + Version) und des optionalen Pakets mit dem Hauptpaket (unter Verwendung des versionsunabhängigen Namens). Visual Studio hilft Ihnen, die richtigen Metadaten in Ihren Dateien zu erhalten.

Die Versionierung von Paketen in einem verknüpften Satz wird so synchronisiert, dass die neueste Version eines Pakets erst verwendet werden kann, wenn alle zugehörigen Set-Pakete (angegeben durch die Version im Hauptpaket) installiert sind. Pakete werden unabhängig voneinander serviced, aber pakete, die in der Gruppe angegeben sind, können erst verwendet werden, wenn alle aktualisiert wurden. Weitere Informationen zu verwandten Sätzen finden Sie im Blogbeitrag: Tools to create a related set (Tools zum Erstellen eines zugehörigen Sätze).

Führen Sie die folgenden Schritte aus, um die Lösung Ihrer App für verwandte Sätze zu konfigurieren:

  1. Klicken Sie mit der rechten Maustaste auf das Hauptpaketprojekt, und wählen Sie Neues > Element hinzufügen... aus.
  2. Suchen Sie im Fenster die installierten Vorlagen nach ".txt", und fügen Sie eine neue Textdatei hinzu.

    Wichtig

    Die neue Textdatei muss den Namen haben: Bundle.Mapping.txt.

  3. Geben Sie in Bundle.Mapping.txt die Datei die Zeichenfolge "[OptionalProjects]" gefolgt von den relativen Pfaden zu Ihren optionalen Paketprojekten ein. Hier ist ein Beispiel für eine Bundle.Mapping.txt-Datei:
    [OptionalProjects]
    "..\ActivatableOptionalPackage1\ActivatableOptionalPackage1.vcxproj"
    "..\ActivatableOptionalPackage2\ActivatableOptionalPackage2.vcxproj"
    

Wenn Ihre Lösung auf diese Weise konfiguriert ist, erstellt Visual Studio ein Paketmanifest namens AppxBundleManifest.xml für das Hauptpaket mit allen erforderlichen Metadaten für verwandte Sätze.

Beachten Sie, dass eine Datei für Bundle.Mapping.txt verwandte Sätze wie optionale Pakete nur für Windows 10 Version 1703 oder höher funktioniert. Darüber hinaus sollte die Mindestversion der Zielplattform Ihrer App auf 10.0.15063.0 oder höher festgelegt werden.

Entfernen optionaler Pakete

Benutzer können in ihre Einstellungen-App wechseln und die optionalen Pakete entfernen. Auf ähnliche Weise können Entwickler RemoveOptionalPackageAsync verwenden, um eine Liste optionaler Pakete zu entfernen.

PackageCatalog catalog = PackageCatalog.OpenForCurrentPackage();
List<string> optionalList = new List<string>();
optionalList.Add("FabrikamAgeAnalysis_kwpnjs8c36mz0");
    
// Warn user that application will be restarted. 
var result = await catalog.RemoveOptionalPackagesAsync(optionalList);
if (result.ExtendedError != null)
{
    throw removalResult.ExtendedError;
}

Hinweis

Bei einem verwandten Satz muss die Plattform die Hauptanwendung neu starten, um die Entfernung zu finalisieren, um Situationen zu vermeiden, in denen die App Inhalte enthält, die aus dem paket geladen werden, das entfernt wird. Die Apps müssen die Benutzer benachrichtigen, dass die Anwendung neu gestartet werden muss, bevor die App die API aufruft.

Wenn das optionale Paket nur dann Inhalt ist, sollte der Entwickler der Plattform explizit mitteilen, dass das Paket, das entfernt werden soll, von der Anwendung "nicht verwendet" wird, bevor der Entwickler das optionale Paket entfernt. Dadurch kann der Entwickler das Paket auch ohne Neustart entfernen.

Bekannte Probleme

Das Debuggen eines zugehörigen optionalen Set-Projekts wird derzeit in der Visual Studio. Um dieses Problem zu beheben, können Sie die Aktivierung bereitstellen und starten (STRG+F5) und den Debugger manuell an einen Prozess anfügen. Um den Debugger anfügen zu können, wechseln Sie zum Menü "Debuggen" in Visual Studio, wählen Sie "An den Prozess anhängen..." aus, und fügen Sie den Debugger an den Hauptprozess der App an.