Inscription et cycle de vie des packages

La suppression d’un package MSIX pour un utilisateur ne supprime pas toujours immédiatement ses fichiers prépositionnés. Windows gère les packages intermédiaires en vérifiant si des utilisateurs, d’autres packages ou des processus en cours d’exécution y font toujours référence.

Utilisez les termes suivants lors de la description de la durée de vie du package :

  • Étape : placez le payload d'un package dans un magasin d'installation géré par Windows.
  • Inscrire : rendre un package intermédiaire disponible pour un utilisateur et créer les intégrations propres à cet utilisateur.
  • Supprimer ou désinscrire : supprimez l’inscription et les intégrations d’un utilisateur.
  • Déstocker : supprimez la charge utile du package mis en attente du système de stockage.

Une opération de suppression peut désinscrire un package sans le déstocker immédiatement.

Références solides

Windows ne peut pas déstocker un package tant qu’une référence forte subsiste. Les références fortes courantes sont les suivantes :

  • Inscription explicite d’un package par un utilisateur.
  • Provisionnement qui rend le package disponible pour les utilisateurs.
  • Dépendance statique déclarée par le biais de PackageDependency.
  • Dépendance de l’environnement d’exécution hôte.
  • Dépendance dynamique persistante que seul le package peut satisfaire.
  • Processus qui utilise actuellement le contenu du package.
  • Épinglage système.
  • Appartenance au produit Unified Update Platform (UUP).

Les packages de framework restent généralement en zone de transit, car d’autres packages en dépendent. Plusieurs versions du package Framework peuvent rester côte à côte pendant la transition des applications entre les versions.

Références faibles

Une référence faible ne suffit pas, à elle seule, à maintenir un package en zone de transit. Les relations entre les paquets de ressources sont l’exemple principal. S’il ne reste que des références faibles, Windows peut supprimer le package et ses relations faibles.

Que se passe-t-il pendant la désinstallation

Lorsque vous supprimez un package, Windows supprime d’abord l’inscription utilisateur applicable et les intégrations spécifiques à l’utilisateur applicables. Elle évalue ensuite si les références fortes restent :

  1. Si une référence forte subsiste, le package reste en zone de transit.
  2. S’il ne reste aucune référence forte, le package peut être déstocké.
  3. Windows supprime la charge utile lorsque le déploiement évalue et collecte ensuite le package non référencé.

Le déstockage peut avoir lieu une fois l’opération de suppression terminée. Certaines modifications de référence se produisent en dehors d’une opération de déploiement, de sorte que le nettoyage de la charge utile n’est pas toujours immédiat.

Si un processus utilise le package, la suppression demande normalement l’arrêt de l’application. Pour éviter d’interrompre le processus, appelez PackageManager.RemovePackageAsync avec RemovalOptions.DeferRemovalWhenPackagesAreInUse. Windows termine la suppression une fois que le package n’est plus utilisé.

Comportement de PowerShell

Remove-AppxPackage supprime une inscription. Ne considérez pas l’absence d’inscription d’un utilisateur comme la preuve que Windows a déjà supprimé tous les fichiers en zone de transit.

Utilisez Get-AppxPackage -AllUsers et les commandes de provisionnement lors du diagnostic des références conservées par d’autres utilisateurs ou par le provisionnement des appareils. La suppression d’un package provisionné affecte les inscriptions futures, mais ne supprime pas les inscriptions qui existent déjà pour les utilisateurs.