Windows Installer (MSI) 対応アプリケーションがアンインストールできなくなったときは
Scoop の utau v0.4.19 のマニフェストをデバックしていたところ、うっかりアンインストールできない環境になってしまい、修正に少し手間取ったのでメモがてら書いておきます。
Windows Installer は、 NSIS (Nullsoft Scriptable Install System) や Inno Setup と異なり、Windows に組み込まれたセットアップシステムです。システムに組み込まれているため、いろいろと恩恵があるのですが、余計なお世話、ということもそれなりにあります。そのためトラブルが起きると、通常のインストーラの対処とは異なる対応が必要になります。
アンインストールできない理由と対処
MSI ファイルが存在しない
インストール時に使った MSI ファイルは、C:\Windows\Installer にキャッシュが保管されることがほとんどです。ただ、なんの理由かわからないのですが、キャッシュされない場合があります。その時は、MSI ファイルがインストールと同じ場所にあることを暗黙に想定し、そこに見つからなかった場合は、MSI ファイルの場所を指定するように促すダイアログが表示されます。
この場合、インストール時に使用した MSI ファイルを入手して、指定します。
MSI ファイルは、そのまま提供されていることもありますが、自己展開書庫の形で提供されていることも多くあります。インストーラーが実行形式で、MSI ファイルを利用したインストールを行っているときは、自己展開書庫やダウンローダである可能性があります。7zip などのアーカイバーで展開するなどして、MSI ファイルを入手してください。
また、ここで少しややこしいのは、MSI ファイルには識別子があることです。Windows Installer は、ファイルそのものの違いではなくこの識別子の違いで、同じインストーラかどうかを判別しています。この識別子は、違うインストーラ・違うバージョンの提供であれば、作成者が意識的に変更しないといけないものです。この変更を忘れると大変ややこしいことになります*1。提供者がうっかりしていると、同じ識別子の違うファイルが複数ある場合があります。インストール時に使用したセットアップファイルは、まとめてどこかに取っておくことをお勧めします。
アンインストールするファイルが足りない
誠に遺憾なのですが、MSI によるアンインストールは、アンインストールされるファイルがすべてそろっていないと成功しません。そのため、何らかの事情によりアンインストールが正常終了する前にファイルを削除してしまうと、アンインストールできなくなります。
MSI ファイルを利用したインストールは、修復機能があり、削除されたファイルを MSI ファイルから配置しなおしてくれる機能があります。ただ、インストール過程で作成されるファイルがアンインストールの対象とされていることがあるようで、修復機能ではアンインストール対象のファイルがすべて戻らないことがあります。この修復機能をデバックしているアプリケーションはかなり少ないように感じます*2。
確実なのは、ほかの PC で同じソフトウェアをセットアップして、そのフォルダを丸ごとコピーすることです。ソフトウェアが、MSI インストーラ以外のインストール手段を用意している場合、それを利用してファイルがそろうのを祈るという手段も利用できます。Utau v0.4.19 の場合は、圧縮ファイルが別途用意されており、それで難を逃れました。
問題解決に使える(かもしれない)ツール
Microsoft Program Install and Uninstall トラブルシューター
こういうおかしなことになったセットアップエントリーは、以前、Microsoft Program Install and Uninstall トラブルシューターで修復できたような記憶もありました。Windows 11 では、トラブルシューターは廃止予定の機能であり、現在、このトラブルシューターに代わる機能は提供されていません。
CCleaner
単純にエントリーを消すだけなら、以前の CCleaner にそういう機能がありました。ただ、2017年に Malware に感染するなど、システムの根幹を変更する、というツールの特性に対する信頼性の面でいまひとつの選択肢になってしまいました。