Partager via


Mettre à jour les applications publiées par le Store à partir de votre code

À compter de Windows 10, version 1607 (build 14393), Windows 10 permet aux développeurs de renforcer les garanties relatives aux mises à jour des applications à partir du Windows Store. Cela nécessite quelques API simples, crée une expérience utilisateur cohérente et prévisible et permet aux développeurs de se concentrer sur ce qu’ils font le mieux tout en permettant à Windows de faire le gros travail.

Il existe deux façons fondamentales de gérer les mises à jour des applications. Dans les deux cas, le résultat net de ces méthodes est le même : la mise à jour est appliquée. Toutefois, dans un cas, vous pouvez choisir de laisser le système effectuer tout le travail alors que dans l’autre cas, vous souhaiterez peut-être avoir un niveau de contrôle plus approfondi sur l’expérience utilisateur.

Mises à jour simples

Tout d’abord, il s’agit de l’appel d’API très simple qui indique au système de case activée pour les mises à jour, de les télécharger, puis de demander l’autorisation de l’utilisateur pour les installer. Vous allez commencer par utiliser la classe StoreContext pour obtenir des objets StorePackageUpdate , les télécharger et les installer.

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();
    }
}

À ce stade, l’utilisateur dispose de deux options : appliquer la mise à jour maintenant ou différer la mise à jour. Quel que soit le choix que l’utilisateur effectue sera retourné via l’objet StorePackageUpdateResult , ce qui permet aux développeurs d’effectuer d’autres actions telles que la fermeture de l’application si la mise à jour est nécessaire pour continuer ou simplement réessayer ultérieurement.

Mises à jour contrôlées finement

Pour les développeurs qui souhaitent avoir une expérience entièrement personnalisée, d’autres API sont fournies, ce qui permet un meilleur contrôle sur le processus de mise à jour. La plateforme vous permet d’effectuer les opérations suivantes :

  • Obtenez des événements de progression sur un téléchargement de package individuel ou sur l’ensemble de la mise à jour.
  • Appliquez des mises à jour à la commodité de l’utilisateur et de l’application plutôt qu’une ou l’autre.

Les développeurs peuvent télécharger des mises à jour en arrière-plan (pendant que l’application est en cours d’utilisation), puis demander à l’utilisateur d’installer les mises à jour, s’ils refusent, vous pouvez simplement désactiver les fonctionnalités affectées par la mise à jour si vous le souhaitez.

Télécharger les mises à jour

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

Installer les mises à jour

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
}

Mise à jour obligatoire

Dans certains cas, il peut être souhaitable de disposer d’une mise à jour qui doit être installée sur l’appareil d’un utilisateur, ce qui le rend vraiment obligatoire (par exemple, un correctif critique pour une application qui ne peut pas attendre). Dans ces cas, il existe des mesures supplémentaires que vous pouvez prendre pour rendre la mise à jour obligatoire.

  1. Implémentez la logique de mise à jour obligatoire dans votre code d’application (vous devrez effectuer une mise à jour obligatoire avant la mise à jour obligatoire elle-même).
  2. Lors de la soumission au Centre de développement, vérifiez que la case Rendre cette mise à jour obligatoire est sélectionnée.

Implémentation du code d’application

Pour tirer pleinement parti des mises à jour obligatoires, vous devez apporter de légères modifications au code ci-dessus. Vous devez utiliser l’objet StorePackageUpdate pour déterminer si la mise à jour est obligatoire.

 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;
}

Ensuite, vous devez créer une boîte de dialogue personnalisée dans l’application pour informer l’utilisateur qu’il existe une mise à jour obligatoire et qu’il doit l’installer pour continuer à utiliser pleinement l’application. Si l’utilisateur refuse la mise à jour, l’application peut dégrader les fonctionnalités (par exemple, empêcher l’accès en ligne) ou se terminer complètement (par exemple, jeux en ligne uniquement).

Espace partenaires

Pour vous assurer que StorePackageUpdate affiche la valeur true pour une mise à jour obligatoire, vous devez marquer la mise à jour comme obligatoire dans l’Espace partenaires dans la page Packages .

Quelques points à noter :

  • Si un appareil revient en ligne une fois qu’une mise à jour obligatoire a été remplacée par une autre mise à jour non obligatoire, la mise à jour non obligatoire s’affiche toujours sur l’appareil comme obligatoire en fonction de la mise à jour manquée avant qu’elle n’ait été obligatoire.
  • Les mises à jour contrôlées par les développeurs et les mises à jour obligatoires sont actuellement limitées au Windows Store.