패키지 등록 및 수명

사용자에 대한 MSIX 패키지를 제거해도 스테이징된 파일이 항상 즉시 삭제되는 것은 아닙니다. Windows는 사용자, 다른 패키지 또는 실행 중인 프로세스가 여전히 참조하는지 여부를 추적하여 스테이징된 패키지를 관리합니다.

패키지 수명을 설명할 때 다음 용어를 사용합니다.

  • 준비: 패키지의 페이로드를 Windows 관리 설치 저장소에 배치합니다.
  • 등록: 스테이징된 패키지를 사용자가 사용할 수 있도록 하고 사용자별 통합을 만듭니다.
  • 제거 또는 등록 취소: 사용자의 등록을 취소하고 통합을 제거합니다.
  • Destage: 스토리지에서 스테이징된 패키지 페이로드를 삭제합니다.

제거 작업은 패키지를 즉시 스테이징 해제하지 않고도 등록을 취소할 수 있습니다.

강한 참조

Windows는 강력한 참조가 남아 있는 동안에는 패키지를 스테이징 해제할 수 없습니다. 일반적인 강한 참조는 다음과 같습니다.

  • 사용자의 명시적 패키지 등록입니다.
  • 사용자가 패키지를 사용할 수 있도록 하는 프로비저닝
  • PackageDependency를 통해 선언된 정적 종속성입니다.
  • 호스트 런타임 종속성
  • 패키지만 충족할 수 있는 지속형 동적 종속성입니다.
  • 현재 패키지 콘텐츠를 사용하는 프로세스입니다.
  • 시스템 핀입니다.
  • UUP(통합 업데이트 플랫폼) 제품 멤버십.

프레임워크 패키지는 다른 패키지가 이에 의존하므로 일반적으로 스테이징된 상태로 유지됩니다. 애플리케이션이 버전 간 마이그레이션하는 동안 여러 프레임워크 패키지 버전은 나란히 유지될 수 있습니다.

약한 참조

약한 참조는 패키지를 독립적으로 스테이징 상태로 유지하지 않습니다. 리소스 패키지 간의 관계가 대표적인 예입니다. 약한 참조만 남아 있으면 Windows는 패키지와 해당 패키지의 약한 관계를 제거할 수 있습니다.

제거 중에 발생하는 일

패키지를 제거하면 Windows 먼저 해당 사용자 등록 및 사용자별 통합을 제거합니다. 그런 다음, 강력한 참조가 남아 있는지 여부를 평가합니다.

  1. 강력한 참조가 유지되면 패키지가 스테이징된 상태로 유지됩니다.
  2. 강력한 참조가 남아 있지 않으면 패키지가 디스테이징 대상이 됩니다.
  3. Windows는 배포가 다음에 평가될 때 참조되지 않은 패키지를 수집하고 페이로드를 제거합니다.

제거 작업이 완료된 후에 데스테이징이 발생할 수 있습니다. 일부 참조 변경 내용은 배포 작업 외부에서 발생하므로 페이로드 정리가 항상 즉각적인 것은 아닙니다.

프로세스가 패키지를 사용하는 경우 제거는 일반적으로 애플리케이션 종료를 요청합니다. 프로세스 중단을 방지하려면 PackageManager.RemovePackageAsync를 RemovalOptions.DeferRemovalWhenPackagesAreInUse와 함께 호출합니다. 패키지가 더 이상 사용되지 않게 되면 Windows에서 제거를 완료합니다.

PowerShell 동작

Remove-AppxPackage로 등록을 제거합니다. 사용자 등록이 없는 경우 Windows가 스테이징된 모든 파일을 이미 삭제했다는 증거로 사용하지 마세요.

다른 사용자 또는 디바이스 프로비저닝에서 보유한 참조를 진단할 때 Get-AppxPackage -AllUsers 및 프로비저닝 명령을 사용합니다. 프로비전된 패키지를 제거하면 향후 등록에 영향을 주지만 사용자에 대해 이미 존재하는 등록은 제거되지 않습니다.