ユーザーの MSIX パッケージを削除しても、ステージング されたファイルがすぐに削除されるとは限りません。 Windowsは、ユーザー、他のパッケージ、または実行中のプロセスが引き続きそれらを参照しているかどうかを追跡することによって、ステージングされたパッケージを管理します。
パッケージの有効期間を記述するときは、次の用語を使用します。
- ステージング: パッケージのペイロードを Windows によって管理されるインストール ストアに配置します。
- レジスー: ユーザーにステージング済みパッケージを提供し、そのユーザー専用の統合機能を作成します。
- 削除または登録解除: ユーザーの登録情報と連携情報を削除します。
- Destage: ステージングされたパッケージ ペイロードをストレージから削除します。
削除操作では、パッケージをすぐにデステージすることなく、登録を解除できます。
強参照
Windowsは、強参照が残っている間はパッケージをデステージできません。 一般的に信頼性の高い参考情報には、次のようなものがあります。
- ユーザーの明示的なパッケージ登録。
- ユーザーがパッケージを使用できるようにするプロビジョニング。
-
PackageDependencyによって宣言された静的依存関係。 - ホストとランタイム間の依存関係。
- パッケージのみが満たすことができる永続的な動的依存関係。
- 現在パッケージ コンテンツを使用しているプロセス。
- システム ピン。
- Unified Update Platform (UUP) の製品メンバーシップ。
フレームワーク パッケージは通常、他のパッケージが依存しているため、ステージングされたままになります。 複数のフレームワーク パッケージ バージョンは、アプリケーションがバージョン間を移行する間、並行して保持できます。
弱い参照
弱参照だけでは、パッケージをステージング状態に保つことはできません。 リソースとパッケージの関係が、その代表的な例です。 弱参照のみが残っている場合、Windows はそのパッケージとその弱い参照関係を削除することができます。
削除中に何が起こるか
パッケージを削除すると、Windowsまず、該当するユーザー登録とユーザー固有の統合が削除されます。 その後、強参照が残っているかどうかを評価します。
- 強い参照が残っている場合、パッケージはステージ済みのままになります。
- 強参照が残っていない場合、パッケージはデステージの対象になります。
- Windows は、次のデプロイ時に参照されていないパッケージを評価して回収する際、そのペイロードを削除します。
削除操作が完了すると、デステージングが発生する可能性があります。 一部の参照変更はデプロイ操作の外部で行われるので、ペイロードのクリーンアップは常に即時とは限りません。
プロセスがパッケージを使用している場合、削除すると通常はアプリケーションの終了が要求されます。 プロセスの中断を回避するには、RemovalOptions.DeferRemovalWhenPackagesAreInUse を使用して PackageManager.RemovePackageAsync を呼び出します。 パッケージが使用されなくなった後、Windows は削除を完了します。
PowerShell の動作
Remove-AppxPackage は登録を削除します。 Windowsがステージングされたすべてのファイルを既に削除している証拠として、ユーザー登録がないことを使用しないでください。
他のユーザーまたはデバイス プロビジョニングによって保持されている参照を診断する場合は、 Get-AppxPackage -AllUsers およびプロビジョニング コマンドを使用します。 プロビジョニングされたパッケージを削除すると、今後の登録に影響しますが、ユーザーに対して既に存在する登録は削除されません。