RessourcenpaketeResource Packages

Ressourcen Pakete bieten eine hervorragend Möglichkeit, den Datenträger Bedarf der Benutzer zu verringern, indem Sie die Sprache segmentieren oder bestimmte Assets in separaten Paketen skalieren, die je nach Benutzer Computerkonfiguration automatisch von Windows heruntergeladen werden.Resource packages offers a great way to reduce users disk footprint by segmenting language or scale specific asset into separate packages that are downloaded automatically by Windows depending on the users machine configuration. Wenn der Benutzer der Liste der Betriebssystemsprachen in der Region & sprach Einstellungen eine neue Sprache hinzufügt oder die Anzeige Konfiguration in einem automatischen Speicher Update ändert, ruft das Betriebssystem die entsprechenden Ressourcen Pakete für alle installierten apps auf dem Gerät ab.If the user adds a new language to their list of OS languages in Region & language settings or changes the display configuration, across an automatic store update, the OS will fetch applicable resource packages for all installed apps on the device.

In Windows SDK die 10.0.17095.0 adresssourcepackageasync-API Entwicklern die Installation eines Ressourcen Pakets für eine APP nach Bedarf.In Windows SDK 10.0.17095.0 AddResourcePackageAsync API allows developers to install a resource package for an app on demand.

Verwenden der adresssourcepackageasync-APIHow to use the AddResourcePackageAsync API

  • Adresssourcepackageasync übernimmt den packagefamilyname der Anwendung und die Ressourcen-ID, die das Ressourcenpaket eindeutig identifiziert, das heruntergeladen werden soll.AddResourcePackageAsync takes the PackageFamilyName of the application and the resource ID that uniquely identifies the resource package that is trying to download. Die Ressourcen-ID entspricht dem ResourceId- Element in der AppxManifest.xml des Ressourcen Pakets.The resource ID corresponds to the ResourceId element in the AppxManifest.xml of the resource package.

  • Die Anwendung muss neu gestartet werden, um eine zusammengeführte Ansicht aller verfügbaren Ressourcen für die Anwendung zu erhalten.The application must restart to get a merged view of all resources that are available to the application. Die API bietet die forcetargetapplicationshutdown -Option, die übergeben werden kann, um die Anwendung neu zu starten.The API offers the ForceTargetApplicationShutdown option that can pass to restart the application.

  • Wenn für die Anwendung ein Update verfügbar ist, wenn das Ressourcenpaket heruntergeladen wird, schlägt die API fehl, da die ältere Version der APP nicht mehr verfügbar ist.If there is an update available for the application when the resource package is being downloaded, the API will fail as the older version of the app is no longer available. Indem das applyupdateifavailable -Flag übergeben wird, aktualisiert die API die APP und erhält das angeforderte Ressourcenpaket im Rahmen desselben Downloads.By passing in the ApplyUpdateIfAvailable flag, the API will update the app as well as get the requested resource package as part of the same download.

  • Die API gibt einen Fortschritt für den Download zurück, der in der Anwendung angezeigt werden kann.The API returns a progress for the download that can display in the application. Beachten Sie auch, dass bei apps, die im Store veröffentlicht werden, die Ressourcenpaket Erfassung auf der Seite Microsoft Store Downloads und Updates angezeigt wird und als Update für die Anwendung angezeigt wird.Also note that for apps published to the store, the resource package acquisition shows up in the Microsoft Store downloads and updates page and shows up as an update to your application. Der Endbenutzer kann das Herunterladen des Ressourcen Pakets aus dem Microsoft Store anhalten oder Abbrechen.The end user can choose to pause or cancel the download of the resource package from the Microsoft Store.

BeispielExample

 private async void DownloadGermanResourcePackage(object sender, RoutedEventArgs e)
{            
    // ResourceId that is unique to the resource package
    string resourceId = "split.language-de";
    // Warn user that application will need to restart.
    // To take update if available pass in the ApplyUpdateIfAvailable flag
    var packageCatalog = PackageCatalog.OpenForCurrentPackage();
    PackageCatalogAddResourcePackageResult result = await packageCatalog.AddResourcePackageAsync("29270depappf.CaffeMacchiato_gah1vdar1nn7a", resourceId, 
        AddResourcePackageOptions.ApplyUpdateIfAvailable | AddResourcePackageOptions.ForceTargetApplicationShutdown)
        .AsTask<PackageCatalogAddResourcePackageResult, PackageInstallProgress>(new Progress
        (progress =>;
        {
                // Draw progress
        }));

        if (result.ExtendedError != null)
        {
                //Display error or retry if needed
        }
}

ValidierungValidation

Für die lokale Validierung können Entwickler eine. msixbundle-oder. appxbundle-Datei erstellen und Sie über das lokale Laufwerk, die Netzwerkfreigabe oder den Webserver installieren.For local validation, developers can create an .msixbundle or .appxbundle and install from your local drive, network share or webserver. Wenn die APP die adresssourcepackageasync-API aufruft, ruft Windows das Ressourcenpaket von dem Speicherort ab, an dem die ursprüngliche Anwendung installiert wurde.When the app calls the AddResourcePackageAsync API, Windows will acquire the resource package from the location where the original application was installed. Dadurch ist die Validierung einfach.This makes the validation simple. Sobald dies funktioniert, ist die APP bereit für die Bereitstellung.Once this works, the app is ready to be deployed.

Entfernen von Ressourcen PaketenRemoving resource packages

Die APP kann zum Entfernen der Ressourcen Pakete entfernt werden, die über die removeresourcepackageasync-APIheruntergeladen wurden.The app can choose to remove to remove the resource package(s) it downloaded via the RemoveResourcePackageAsync API. Ressourcen Pakete, die für den Benutzer oder das Gerät als Ganzes anwendbar sind, können jedoch nicht deinstalliert werden.However, Resource packages that are applicable for the user or the device as a whole cannot be uninstalled.

BeispielExample

 private async void RemoveResourcePackage(object sender, RoutedEventArgs e)
{            
    var packageCatalog = PackageCatalog.OpenForCurrentPackage();
    List resourcePackagesToRemove = new List();
    resourcePackagesToRemove.Add("split.language-de");
    //Warn user that application will be restarted
    var removePackageResult = await packageCatalog.RemoveResourcePackagesAsync(resourcePackagesToRemove);
    if (removePackageResult.ExtendedError != null)
    {
        // display error
    }
}