Die im Store veröffentlichten Apps aus Ihrem Code aktualisierenUpdate Store-published apps from your code

Ab Windows 10, Version 1607 (Build 14393), ermöglicht Windows 10 Entwicklern, höhere Garantien im Hinblick auf APP-Updates aus dem Store zu treffen.Starting in Windows 10, version 1607 (build 14393), Windows 10 allows developers to make stronger guarantees around app updates from the Store. Hierfür sind einige einfache APIs erforderlich, und es wird eine konsistente und vorhersagbare Benutzer Darstellung erstellt, und die Entwickler können sich auf das konzentrieren, was Sie am besten tun, während Windows eine hohe Arbeit ermöglicht.Doing this requires a few simple APIs, creates a consistent and predictable user experience and lets developers to focus on what they do best while allowing Windows to do the heavy lifting.

Es gibt zwei grundlegende Möglichkeiten, APP-Updates zu verwalten.There are two fundamental ways that app updates can be managed. In beiden Fällen ist das Ergebnis für diese Methoden identisch-das Update wird angewendet.In both cases, the net result for these methods is the same - the update is applied. In einem Fall können Sie jedoch festlegen, dass das System die gesamte Arbeit erledigen soll, während Sie in einem anderen Fall eine tiefere Kontrolle über die Benutzer Leistung haben können.However, in one case, you can choose to let the system do all the work while in the other case you might want to have a deeper level of control over the user experience.

Einfache UpdatesSimple updates

Vor allem ist der einfache API-Befehl, der das System anweist, nach Updates zu suchen, diese herunterzuladen und dann die Berechtigung des Benutzers anzufordern, Sie zu installieren.First and foremost is the very simple API call that tells the system to check for updates, download them and then request permission from the user to install them. Sie beginnen mit der storecontext -Klasse, um storepackageupdate -Objekte abzurufen und Sie herunterzuladen und zu installieren.You'll start by using the StoreContext class to get StorePackageUpdate objects, download and install them.

using Windows.Services.Store;

private async void GetEasyUpdates()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();

    if (updates.Count > 0)
    {
        IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> downloadOperation = 
            updateManager.RequestDownloadAndInstallStorePackageUpdatesAsync(updates);
        StorePackageUpdateResult result = await downloadOperation.AsTask();
    }
}

An diesem Punkt hat der Benutzer zwei Optionen, die Sie auswählen können: das Update jetzt anwenden oder das Update verschieben.At this point the user has two options they can choose from: apply the update now or defer the update. Welche Auswahl der Benutzer macht, wird über das-Objekt an zurückgegeben, StorePackageUpdateResult sodass Entwickler weitere Aktionen ausführen können, wie z. b. das Schließen der APP, wenn das Update zum Fortfahren erforderlich ist, oder versuchen Sie es später noch mal.Whatever choice the user makes will be returned back to via the StorePackageUpdateResult object allowing developers to take further actions such as closing down the app if the update is required to continue or simply trying again later.

Fein gesteuerte UpdatesFine-controlled updates

Für Entwickler, die eine vollständig angepasste Benutzer Darstellung wünschen, werden zusätzliche APIs bereitgestellt, die eine bessere Kontrolle über den Aktualisierungsprozess ermöglichen.For developers who want to have a completely customized experience, additional APIs are provided which enable more control over the update process. Die Plattform ermöglicht Ihnen Folgendes:The platform enables you to do the following:

  • Erzielen Sie Statusereignisse für einen einzelnen Paket Download oder für das gesamte Update.Get progress events on an individual package download or on the whole update.
  • Anwenden von Updates auf die Benutzer-und App-APP und nicht auf die andere.Apply updates at the user's and app's convenience rather than one or the other.

Entwickler können Updates im Hintergrund herunterladen (während die APP verwendet wird) und dann die Benutzer Installations Updates anfordern. Wenn Sie diese ablehnen, können Sie die von der Aktualisierung betroffenen Funktionen einfach deaktivieren.Developers are able to download updates in the background (while app is in use) then request the user install updates, if they decline, you can simply disable capabilities affected by the update if you choose.

Updates herunterladenDownload updates

private async void DownloadUpdatesAsync()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();

    if (updates.Count > 0)
    {
        IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> downloadOperation =
            updateManager.RequestDownloadStorePackageUpdatesAsync(updates);

        downloadOperation.Progress = async (asyncInfo, progress) =>
        {
            // Show progress UI
        };

        StorePackageUpdateResult result = await downloadOperation.AsTask();
        if (result.OverallState == StorePackageUpdateState.Completed)
        {
            // Update was downloaded, add logic to request install
        }
    }
}

Installieren von UpdatesInstall updates

private async void InstallUpdatesAsync()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();    

    // Save app state here

    IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> installOperation =
        updateManager.RequestDownloadAndInstallStorePackageUpdatesAsync(updates);

    StorePackageUpdateResult result = await installOperation.AsTask();

    // Under normal circumstances, app will terminate here

    // Handle error cases here using StorePackageUpdateResult from above
}

Vornehmen von Updates obligatorischMaking updates mandatory

In einigen Fällen ist es möglicherweise wünschenswert, ein Update zu installieren, das auf dem Gerät eines Benutzers installiert werden muss. Dies ist für eine APP wirklich obligatorisch (z. b. eine kritische Lösung für eine APP, die nicht warten kann).In some cases, it might actually be desirable to have an update that must be installed to a user's device - making it truly mandatory (e.g. a critical fix to an app that can't wait). In diesen Fällen können Sie zusätzliche Maßnahmen ergreifen, um das Update obligatorisch zu machen.In these cases, there are additional measures that you can take to make the update mandatory.

  1. Implementieren Sie die erforderliche Update Logik in Ihrem app-Code (müsste vor der obligatorischen Aktualisierung selbst durchgeführt werden).Implement the mandatory update logic in your app code (would need to be done before mandatory update itself).
  2. Stellen Sie während der Übermittlung an das dev Center sicher, dass das Kontrollkästchen dieses Update obligatorisch machen ausgewählt ist.During submission to the Dev Center, ensure the Make this update mandatory box is selected.

Implementieren von App-CodeImplementing app code

Um die obligatorischen Updates in vollem Umfang nutzen zu können, müssen Sie einige geringfügige Änderungen am obigen Code vornehmen.In order to take full advantage of mandatory updates, you'll need to make some slight modifications to the code above. Sie müssen das storepackageupdate-Objekt verwenden, um zu bestimmen, ob das Update obligatorisch ist.You'll need to use the StorePackageUpdate object to determine if the update is mandatory.

 private async bool CheckForMandatoryUpdates()
{
    StoreContext updateManager = StoreContext.GetDefault();
    IReadOnlyList<StorePackageUpdate> updates = await updateManager.GetAppAndOptionalStorePackageUpdatesAsync();

    if (updates.Count > 0)
    {
        foreach (StorePackageUpdate u in updates)
        {
            if (u.Mandatory)
                return true;
        }
    }
    return false;
}

Anschließend müssen Sie ein benutzerdefiniertes Dialogfeld in der APP erstellen, um den Benutzer darüber zu informieren, dass ein obligatorisches Update vorliegt und dass es installiert werden muss, um die vollständige Nutzung der APP fortzusetzen.Then you'll need to create a custom in app dialog to inform the user that there is a mandatory update and that they must install it to continue full use of the app. Wenn der Benutzer das Update ablehnt, kann die APP entweder die Funktionalität beeinträchtigen (z. b. den Online Zugriff verhindern) oder vollständig beenden (z. b. reine Online Spiele).If the user declines the update, the app could either degrade functionality (for example, prevent online access) or terminate completely (for example, online-only games).

Partner CenterPartner Center

Um sicherzustellen, dass storepackageupdate true für ein obligatorisches Update anzeigt, müssen Sie das Update im Partner Center auf der Seite " Pakete " als obligatorisch kennzeichnen.To ensure the StorePackageUpdate shows true for a mandatory update, you will need to mark the update as mandatory in the Partner Center in the Packages page.

Es sind einige Punkte zu beachten:A couple of things to note:

  • Wenn ein Gerät wieder online geschaltet wird, nachdem ein obligatorisches Update durch ein anderes nicht obligatorisches Update abgelöst wurde, wird das nicht obligatorische Update auf dem Gerät immer noch als obligatorisch angezeigt, wenn das fehlende Update vor der Verwendung obligatorisch war.If a device comes back online after a mandatory update has been superseded with another non-mandatory update, the non-mandatory update will still show up on the device as mandatory given the missed update before it was mandatory.
  • Entwickler gesteuerte Updates und obligatorische Updates sind zurzeit auf den Speicher beschränkt.Developer-controlled updates and mandatory updates are currently limited to the Store.