사용자에 대한 MSIX 패키지를 제거해도 스테이징된 파일이 항상 즉시 삭제되는 것은 아닙니다. Windows는 사용자, 다른 패키지 또는 실행 중인 프로세스가 여전히 참조하는지 여부를 추적하여 스테이징된 패키지를 관리합니다.
패키지 수명을 설명할 때 다음 용어를 사용합니다.
- 준비: 패키지의 페이로드를 Windows 관리 설치 저장소에 배치합니다.
- 등록: 스테이징된 패키지를 사용자가 사용할 수 있도록 하고 사용자별 통합을 만듭니다.
- 제거 또는 등록 취소: 사용자의 등록을 취소하고 통합을 제거합니다.
- Destage: 스토리지에서 스테이징된 패키지 페이로드를 삭제합니다.
제거 작업은 패키지를 즉시 스테이징 해제하지 않고도 등록을 취소할 수 있습니다.
강한 참조
Windows는 강력한 참조가 남아 있는 동안에는 패키지를 스테이징 해제할 수 없습니다. 일반적인 강한 참조는 다음과 같습니다.
- 사용자의 명시적 패키지 등록입니다.
- 사용자가 패키지를 사용할 수 있도록 하는 프로비저닝
-
PackageDependency를 통해 선언된 정적 종속성입니다. - 호스트 런타임 종속성
- 패키지만 충족할 수 있는 지속형 동적 종속성입니다.
- 현재 패키지 콘텐츠를 사용하는 프로세스입니다.
- 시스템 핀입니다.
- UUP(통합 업데이트 플랫폼) 제품 멤버십.
프레임워크 패키지는 다른 패키지가 이에 의존하므로 일반적으로 스테이징된 상태로 유지됩니다. 애플리케이션이 버전 간 마이그레이션하는 동안 여러 프레임워크 패키지 버전은 나란히 유지될 수 있습니다.
약한 참조
약한 참조는 패키지를 독립적으로 스테이징 상태로 유지하지 않습니다. 리소스 패키지 간의 관계가 대표적인 예입니다. 약한 참조만 남아 있으면 Windows는 패키지와 해당 패키지의 약한 관계를 제거할 수 있습니다.
제거 중에 발생하는 일
패키지를 제거하면 Windows 먼저 해당 사용자 등록 및 사용자별 통합을 제거합니다. 그런 다음, 강력한 참조가 남아 있는지 여부를 평가합니다.
- 강력한 참조가 유지되면 패키지가 스테이징된 상태로 유지됩니다.
- 강력한 참조가 남아 있지 않으면 패키지가 디스테이징 대상이 됩니다.
- Windows는 배포가 다음에 평가될 때 참조되지 않은 패키지를 수집하고 페이로드를 제거합니다.
제거 작업이 완료된 후에 데스테이징이 발생할 수 있습니다. 일부 참조 변경 내용은 배포 작업 외부에서 발생하므로 페이로드 정리가 항상 즉각적인 것은 아닙니다.
프로세스가 패키지를 사용하는 경우 제거는 일반적으로 애플리케이션 종료를 요청합니다. 프로세스 중단을 방지하려면 PackageManager.RemovePackageAsync를 RemovalOptions.DeferRemovalWhenPackagesAreInUse와 함께 호출합니다. 패키지가 더 이상 사용되지 않게 되면 Windows에서 제거를 완료합니다.
PowerShell 동작
Remove-AppxPackage로 등록을 제거합니다. 사용자 등록이 없는 경우 Windows가 스테이징된 모든 파일을 이미 삭제했다는 증거로 사용하지 마세요.
다른 사용자 또는 디바이스 프로비저닝에서 보유한 참조를 진단할 때 Get-AppxPackage -AllUsers 및 프로비저닝 명령을 사용합니다. 프로비전된 패키지를 제거하면 향후 등록에 영향을 주지만 사용자에 대해 이미 존재하는 등록은 제거되지 않습니다.