Die im Store veröffentlichten Apps aus Ihrem Code aktualisieren

Ab Windows 10 Version 1607 (Build 14393) ermöglicht Windows 10 Entwicklern stärkere Garantien für App-Updates aus Store. Dies erfordert einige einfache APIs, sorgt für eine konsistente und vorhersagbare Benutzererfahrung und ermöglicht Entwicklern, sich auf das zu konzentrieren, was sie am besten können, während Windows die große Arbeit zulässt.

Es gibt zwei grundlegende Möglichkeiten, wie App-Updates verwaltet werden können. In beiden Fällen ist das Endergebnis für diese Methoden identisch – das Update wird angewendet. In einem Fall können Sie jedoch festlegen, dass das System die ganze Arbeit übernimmt, während Sie in einem anderen Fall eine tiefere Kontrolle über die Benutzererfahrung haben möchten.

Einfache Updates

Vor allem ist der sehr einfache API-Aufruf, der das System anfing, nach Updates zu suchen, sie herunterzuladen und dann vom Benutzer die Berechtigung zur Installation an fordern. Sie beginnen mit der StoreContext-Klasse, um StorePackageUpdate-Objekte herunterzuladen und zu installieren.

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, aus denen er auswählen kann: Das Update jetzt anwenden oder das Update zurück stellen. Unabhängig davon, welche Auswahl der Benutzer trifft, wird über das -Objekt wieder an zurückgegeben, sodass Entwickler weitere Aktionen ausführen können, z. B. das Schließen der App, wenn das Update erforderlich ist, um fortzufahren oder es später einfach StorePackageUpdateResult erneut zu versuchen.

Feingesteuerte Updates

Für Entwickler, die eine vollständig angepasste Erfahrung wünschen, werden zusätzliche APIs bereitgestellt, die mehr Kontrolle über den Updateprozess ermöglichen. Die Plattform ermöglicht Folgendes:

  • Erhalten Sie Statusereignisse für einen einzelnen Paketdownload oder für das gesamte Update.
  • Wenden Sie Updates zur Vereinfachung des Benutzers und der App anstelle des einen oder des anderen an.

Entwickler können Updates im Hintergrund herunterladen (während die App verwendet wird) und dann vom Benutzer Installationsupdates anfordern. Wenn sie dies ablehnen, können Sie die vom Update betroffenen Funktionen einfach deaktivieren, wenn Sie dies auswählen.

Herunterladen von 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 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
}

Obligatorisch machen von Updates

In einigen Fällen kann es tatsächlich wünschenswert sein, ein Update zu haben, das auf dem Gerät eines Benutzers installiert werden muss. Dies macht es wirklich obligatorisch (z. B. eine kritische Korrektur für eine App, die nicht warten kann). In diesen Fällen können Sie zusätzliche Maßnahmen ergreifen, um das Update obligatorisch zu machen.

  1. Implementieren Sie die obligatorische Updatelogik in Ihren App-Code (muss vor dem obligatorischen Update selbst durchgeführt werden).
  2. Stellen Sie während der Übermittlung Dev Center, dass das Kontrollkästchen Dieses Update obligatorisch machen aktiviert ist.

Implementieren von App-Code

Um die obligatorischen Updates vollständig nutzen zu können, müssen Sie einige geringfügige Änderungen am obigen Code ausführen. Sie müssen das StorePackageUpdate-Objekt verwenden, um zu bestimmen, ob das Update obligatorisch ist.

 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 einen benutzerdefinierten im App-Dialogfeld erstellen, um den Benutzer darüber zu informieren, dass ein obligatorisches Update vorgefertigt ist und dass es installiert werden muss, um die App weiterhin vollständig nutzen zu können. Wenn der Benutzer das Update abgelehnt hat, kann die App entweder die Funktionalität herabsetzen (z. B. den Onlinezugriff verhindern) oder vollständig beenden (z. B. Nur-Online-Spiele).

Partner Center

Um sicherzustellen, dass StorePackageUpdate für ein obligatorisches Update true angezeigt wird, müssen Sie das Update im Partner Center auf der Seite Pakete als obligatorisch markieren.

Beachten Sie einige Dinge:

  • Wenn ein Gerät wieder online ist, nachdem ein obligatorisches Update durch ein anderes nicht obligatorisches Update ersetzt wurde, wird das nicht obligatorische Update weiterhin auf dem Gerät als obligatorisch angezeigt, wenn das verpasste Update vor der obligatorischen Aktualisierung erforderlich war.
  • Von Entwicklern gesteuerte Updates und obligatorische Updates sind derzeit auf die Store.