# C:\Windows\Installerは削除してよいか

`C:\Windows\Installer`はWindows Installerのキャッシュです。Windows InstallerでインストールしたソフトウェアのMSIパッケージとMSPパッチのコピーを置き、あとからそのソフトウェアを更新、修復、アンインストールするときにWindowsが使います。Microsoftの案内は短いです。削除すべきではありません。壊れ方はすぐには出ず、次にアプリが更新やアンインストールを試したときに出ます。Microsoftは、これを消すサポートされたツールを提供していません。容量が安全に戻るのは、使わないソフトウェアのアンインストールと、ほかのクリーンアップからで、このフォルダからではありません。

## フォルダの中身

[インストーラーキャッシュに関するMicrosoftのサポート記事](https://learn.microsoft.com/en-us/troubleshoot/windows-client/application-management/missing-windows-installer-cache)は、そこにある理由を説明しています。製品がWindows Installerでインストールされると、キャッシュはアンインストールと更新に必要なファイルを保存します。Heath Stewartによる2008年の[Microsoftセットアップチームのブログ](https://devblogs.microsoft.com/setup/why-windows-installer-may-require-so-much-disk-space/)は、詳細を足しています。キャッシュされるコピーは、埋め込みキャビネットを除いた`.msi`か、パッチ全体の`.msp`で、アンインストールを含む以後のメンテナンスのために残ります。パッチは更新されたファイルを含むので、丸ごと残されます。

だから、パッチが当たったMSI製品とともにフォルダは大きくなります。パッチのたびにキャッシュされた`.msp`が足され、フォルダはそれらの製品が再び必要とし得るものの記録になります。Microsoftの記事自身が、業務用PCでよくある出所としてSQL ServerとOfficeを挙げています。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-windows-installer-folder-cleanup-en-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-windows-installer-folder-cleanup-en.webp" width="1360" height="454" loading="lazy" alt="Windowsがキャッシュしたインストーラーパッケージを使うとき">
  </picture>
  <figcaption>パッケージはインストール時にキャッシュへコピーされ、更新、修復、最終的なアンインストールで再び読まれます。</figcaption>
</figure>

## ファイルを消すと、あとから壊れる理由

Microsoftの記事は、問題が製品のアンインストール、修復、更新まで現れないことがあると明記しています。キャッシュしたファイルを消した日は無害に見え、数ヶ月後にOfficeの更新やアンインストールが失敗します。同じ記事は、キャッシュファイルがないときにセットアップログに出得るエラーを挙げています。

| コード | メッセージの要点 |
| --- | --- |
| 1612 | この製品のインストールソースを利用できない |
| 1620 | このインストールパッケージを開けなかった |
| 1635 | この更新パッケージを開けなかった |
| 1636 | Windows InstallerのMSPファイルをインストールできない |
| 1642 | アップグレードをインストールできない。アップグレード対象のプログラムがない可能性がある |

これらのコードにはほかの原因もあるので、1つ見えたからといってキャッシュが壊れた証明にはなりません。削除の代償が大きいのは復旧です。Microsoftは、ファイルは一意なので別のコンピューターからコピーできず、Windowsサポートも復旧できず、不足しているファイルだけをバックアップから戻すこともできないとしています。挙げている選択肢は、アプリの開発元自身の修復手順、システムの復元ポイント、システム状態の完全な復元、またはWindowsとアプリケーションの再インストールです。

## 隠しフォルダ`$PatchCache$`

フォルダの中に`$PatchCache$`、ベースラインキャッシュがあります。パッチが製品を更新するとき、Windows Installerは置き換えるファイルの古い版を保存できるので、あとのパッチやパッチの削除が元のインストールメディアを要求しなくて済みます。[MicrosoftのMaxPatchCacheSizeのリファレンス](https://learn.microsoft.com/en-us/windows/win32/msi/maxpatchcachesize)は限度を説明しています。既定ではキャッシュはディスクの最大10%を使え、ポリシー値0は新しいファイルの保存を止め、ポリシーを変えてもすでに保存されたファイルには影響しません。

2008年のセットアップブログは、これらのベースラインファイルは削除できるが代償があるとしています。パッチの削除や不足ファイルの復元が、元のソースメディアを要求することがあり、何年も前にダウンロードしたソフトウェアでは、そのメディアを持っていない人が多いです。同じ投稿は、キャッシュを無効にすることを、代償のある交換として扱い、クリーンアップの勝ちとはしていません。下のコマンドで先に測ります。小さければ、その交換をする価値はありません。

## 決める前に測る

次の読み取り専用コマンドは、フォルダとベースラインキャッシュの大きさを示します。PowerShellを管理者として実行します。サイズを読むだけです。

```powershell
(Get-ChildItem C:\Windows\Installer -Force -Recurse -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1GB
(Get-ChildItem 'C:\Windows\Installer\$PatchCache$' -Force -Recurse -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1GB
```

結果をドライブ全体と比べます。500GBのドライブで数GBは、パッチ済みのソフトウェアが入っていることの一部です。数字が非常に大きく、PCにOfficeやSQL Serverがあるなら、通常の出所はそれらの製品で、正しいツールはそちらのものです。

## 孤立したパッケージは公式の経路だけ

製品を外したあとに残るパッチ、よく孤立したパッケージと呼ばれるものが、クリーンアップツールを探す理由です。Microsoftの記事はこれを直接扱っています。キャッシュを再構築または修復すると主張する第三者がいるが、Microsoftはどれも推奨も承認もできず、使うなら自己責任です。どのキャッシュファイルが未使用かを判断して消す、一般的なMicrosoftのツールはありません。

あるのは製品ごとの手順です。SQL Serverについては、同じ記事が、SQL Serverの更新中に不足したキャッシュファイルを復元するMicrosoftの手順へリンクしています。Officeについては、Robust Office Inventory Scanとパッチメンテナンスユーティリティを指しています。特定の製品の更新が上のエラーの1つで失敗するなら、フォルダからではなく、その開発元の修復またはアンインストールの手順から始めます。

## 容量を安全に戻す方法

- **使わないソフトウェアをアンインストールする。** 「設定」の「アプリ」「インストールされているアプリ」から、[Microsoftのアンインストール手順](https://support.microsoft.com/en-us/windows/uninstall-or-remove-apps-and-programs-in-windows-4b55f974-2cc6-2d2b-d092-5905080eaf98)に従います。アンインストーラーを通して外すのが、Windows Installerが前提にしている経路で、背後でファイルを消すことではありません。
- **ディスククリーンアップのシステムファイル項目を実行する。** Windows Updateのクリーンアップと配信の最適化ファイルは[ディスククリーンアップとストレージセンサー](/ja/windows/blog/disk-cleanup-vs-storage-sense-windows)で、コンポーネントストアは[WinSxSのクリーンアップ](/ja/windows/blog/winsxs-folder-cleanup-windows)で扱います。
- **ルートの大きなファイルを確認する。** `hiberfil.sys`と`pagefile.sys`は数GBを占めることが多いです。[Cドライブのhiberfilとpagefile](/ja/windows/blog/hiberfil-pagefile-c-drive-windows)が交換条件を説明しています。
- **ドライブを実際に埋めているものを探す。** ゲーム、動画、仮想ディスク、Dockerのデータの方がよくある原因です。[大きなファイルを探す](/ja/windows/blog/find-large-files-on-windows)から始めます。

`C:\ProgramData\Package Cache`も同じ注意が要ります。Microsoftの[開発ドライブのドキュメント](https://learn.microsoft.com/en-us/windows/dev-drive/)は、パッケージキャッシュを、インストール済みソフトウェアの更新、アンインストール、修復に必要なソースファイルをアプリが置く場所と説明し、データの多くをそこに置くアプリとしてVisual Studioを挙げています。

## やってはいけないこと

削除のために`C:\Windows\Installer`の所有権を取らないでください。クリーンアップの合計を良く見せるために空にしないでください。不足したものを置き換えるために、別のPCからキャッシュファイルをコピーしないでください。影響を受けた製品の開発元が提供したものでない限り、「孤立した」`.msp`を消すスクリプトを実行しないでください。

Mole for Windowsは両方のフォルダに触れません。クリーンに`C:\Windows\Installer`や`Package Cache`の規則はなく、アプリがアンインストール後の残りを探すとき、InstallerやPackage Cacheという名前のフォルダはWindowsとすべてのアプリが共有するものとして扱い、外している1つに属するものとはしません。

容量が本当にインストーラーキャッシュではなく更新ファイルから来ているときは、[Windows Updateのファイルを削除する](/ja/windows/blog/delete-windows-update-files)が各削除の代償を扱います。何かを変える前に、[Windowsの復元ポイントとファイルのバックアップ](/ja/windows/blog/windows-restore-points-and-backups)から始めてください。

## よくある質問

### Windows Installerフォルダは削除できますか?

できません。Microsoftは、Windows Installerのキャッシュを削除すべきではないとしています。MSIでインストールしたアプリは、更新、修復、アンインストールにこれが必要で、失敗はあとから現れます。

### C:\Windows\Installerが大きいのはなぜですか?

インストール済みソフトウェアに適用されたすべてのMSIパッケージとすべてのMSPパッチのコピーを残すからです。OfficeやSQL Serverのようにパッチを多く受ける製品があると、大きくなります。

### $PatchCache$を削除しても安全ですか?

Microsoftのセットアップチームは、ベースラインキャッシュのファイルは削除できるとしています。ただしパッチの削除やファイルの修復が、元のインストールメディアを要求することがあります。決める前にサイズを測ってください。

### Windows Installerフォルダを整理するMicrosoftのツールはありますか?

一般的なものはありません。Microsoftは第三者のキャッシュクリーナーを承認せず、SQL ServerとOfficeには製品ごとの手順を用意しています。フォルダを編集する代わりに、設定から使わないソフトウェアをアンインストールします。


Canonical: https://mole.fit/ja/windows/blog/windows-installer-folder-cleanup
