Registrace a životnost balíčku

Odebrání balíčku MSIX pro uživatele neodstraní vždy jeho připravené soubory. Windows spravuje fázované balíčky sledováním, jestli na ně stále odkazují uživatelé, další balíčky nebo spuštěné procesy.

Při popisu životnosti balíčku použijte následující termíny:

  • Příprava: Datovou část balíčku umístěte do úložiště instalace spravovaného systémem Windows.
  • Registrovat: Zpřístupněte fázovaný balíček uživateli a vytvořte jeho integrace specifické pro uživatele.
  • Odebrat nebo zrušit registraci: Odeberte registraci a integrace uživatele
  • Destage: Odstraňte datovou část připraveného balíčku z úložiště.

Operace odebrání může odregistrovat balíček bez okamžitého destagingu.

Silné reference

Windows nemůže odebrat balíček, dokud zůstane silná reference. Mezi běžné silné reference patří:

  • Explicitní registrace balíčku uživatele
  • Nasazení, které zpřístupňuje balíček uživatelům.
  • Statická závislost deklarovaná prostřednictvím PackageDependency.
  • Závislost na hostitelském modulu runtime.
  • Trvalá dynamická závislost, kterou může uspokojit pouze balíček.
  • Proces, který aktuálně používá obsah balíčku.
  • Systémový PIN.
  • Členství v produktu Unified Update Platform (UUP).

Balíčky rozhraní obvykle zůstávají ve fázi postupného zavádění, protože na nich závisí další balíčky. Několik verzí balíčků Framework může zůstat vedle sebe, zatímco aplikace přecházejí mezi verzemi.

Slabé odkazy

Slabá reference sama o sobě neudrží balíček ve stavu připraveno. Primárním příkladem jsou vztahy mezi prostředky a balíčky. Pokud zůstanou pouze slabé odkazy, Windows mohou balíček a jeho slabé vztahy odebrat.

Co se stane během odstranění

Když balíček odeberete, Windows nejprve odebere příslušnou registraci uživatele a integrace specifické pro uživatele. Potom vyhodnotí, jestli silné reference zůstávají:

  1. Pokud zůstane silný odkaz, balíček zůstane ve fázi přípravy.
  2. Pokud žádné silné odkazy nezůstanou, bude balíček způsobilý k přesunu z aktivní vrstvy.
  3. Windows odebere obsah balíčku při dalším vyhodnocení nasazení a odebere nerefencovaný balíček.

Po dokončení operace odebrání může dojít k destagingu. Některé referenční změny probíhají mimo operaci nasazení, takže vyčištění payloadu není vždy okamžité.

Pokud proces používá balíček, odebrání obvykle vyžaduje vypnutí aplikace. Chcete-li zabránit přerušení procesu, zavolejte PackageManager.RemovePackageAsync s RemovalOptions.DeferRemovalWhenPackagesAreInUse. Windows dokončí odebrání po tom, co se balíček už nepoužívá.

Chování PowerShellu

Remove-AppxPackage odebere registraci. Nepoužívejte absenci registrace uživatele jako důkaz, že systém Windows už odstranil všechny připravené soubory.

Použijte Get-AppxPackage -AllUsers a příkazy pro zřizování při diagnostice odkazů držených jinými uživateli nebo zřizováním zařízení. Odebrání zřízeného balíčku ovlivní budoucí registrace, ale neodebere registrace, které už existují pro uživatele.