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

à partir de Windows 10, la version 1607 (build 14393), Windows 10 permet aux développeurs de renforcer les garanties concernant les mises à jour d’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 autorisant Windows à faire le gros du travail.

Il existe deux façons fondamentales de gérer les mises à jour d’application. 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 faire tout le travail dans le cas où vous souhaiteriez avoir un niveau plus élevé de contrôle 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 rechercher les mises à jour, de les télécharger, puis de demander l’autorisation à l’utilisateur de les installer. Vous allez commencer par utiliser la classe StoreContext pour récupérer 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 a le choix entre deux options : appliquer la mise à jour maintenant ou différer la mise à jour. Le choix de l’utilisateur sera renvoyé à 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 essayer plus tard.

Mises à jour contrôlées avec précision

Pour les développeurs qui souhaitent bénéficier d’une expérience entièrement personnalisée, des API supplémentaires sont fournies, qui permettent de mieux contrôler le processus de mise à jour. La plateforme vous permet d’effectuer les opérations suivantes :

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

Les développeurs sont en mesure de télécharger les mises à jour en arrière-plan (pendant que l’application est en cours d’utilisation), puis demandent à 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
}

Rendre des mises à jour obligatoires

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 la rend véritablement obligatoire (par exemple, un correctif critique pour une application qui ne peut pas attendre). Dans ce 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 le code de votre application (doit être effectuée avant la mise à jour obligatoire).
  2. pendant la soumission au Centre de développement, assurez-vous que la case rendre cette mise à jour obligatoire est cochée.

Implémentation du code de l’application

Pour tirer pleinement parti des mises à jour obligatoires, vous devez apporter quelques modifications mineures 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;
}

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

Espace partenaires

Pour vous assurer que le StorePackageUpdate affiche la valeur true pour une mise à jour obligatoire, vous devez marquer la mise à jour comme étant obligatoire dans l’espace partenaires dans la page packages .

Voici quelques points à noter :

  • Si un appareil revient en ligne après 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, étant donné que la mise à jour n’est pas obligatoire.
  • Les mises à jour contrôlées par le développeur et les mises à jour obligatoires sont actuellement limitées au magasin.