Installerフォルダーの肥大化#5 アプリにアンインストール機能を追加

前回の投稿までに、Installer Adjustment AppでInstallerフォルダー内の未使用ファイルの確認ができるようになりました。そして、同様のアプリであるPatchCleanerと解析結果の比較をしてみました。今回は、アプリにもう少し機能を追加します。

Installer Adjustment App 0.2.0

アプリアイコン(Installer Adjustment App 0.2.0)

Installer Adjustment Appのバージョン0.2.0では、リリースページに記載があるように、以下の機能を実装しました。

  • システムに登録されているインストーラーの一覧を表示する機能を追加
  • Installerフォルダー内の未使用ファイル・フォルダーを解析・表示する機能を追加
  • Installerフォルダー内の使用中のインストーラーファイル(msi/msp)を解析・表示する機能を追加

解析結果の概要のみが確認できるのみで、インストーラーの詳細情報などは確認できませんでした。また、もちろん、調整機能(システムに変更を加えるような機能)はまだありません。

ここに、インストーラーの詳細情報を確認する機能とインストーラーをアンインストールする機能を追加しました。

Installer Adjustment App 0.3.0

アプリアイコン(Installer Adjustment App 0.3.0)

Installer Adjustment Appのバージョン0.3.0は、リリースページからダウンロードできます。

このバージョンでは、リリースページに記載があるように、以下の機能を実装しました。

  • 暫定のアプリアイコンを追加
  • アプリを管理者権限で起動する手段を追加
  • 製品のアンインストーラーを使って製品をアンインストールする機能を追加
  • 製品のインストーラーの詳細を確認する機能を追加
  • 製品のインストーラーの不正状態を表示する機能を追加

各機能の詳細は、リリースページの説明を参照してください。

本投稿では、後者の3つについて簡単に説明します。

製品のアンインストーラーを使って製品をアンインストールする機能

メイン画面に製品のインストーラー一覧を表示しているなら、個別にアンインストールできたら便利になるだろうと考え、製品をアンインストールする機能を追加しました。

この機能はシステムに変更を加えます。しかし、製品の正規のアンインストーラーを使ってアンインストールするため、システムを破壊してしまうことはないと思います。

アンインストールするためには、アンインストールしたい製品のチェックボックスをチェックします。この時、複数の製品を選択することもできます。つぎに「選択した製品をアンインストールする」ボタンをクリックします。

メイン画面上の「製品のアンインストール」ボタン

ボタンをクリックすると、アンインストール前の確認画面が表示されます。

アンインストールの確認画面

確認画面では、アンインストールする製品に間違いがないか確認します。そして、アンインストール中に表示するUIの種類を選択しします。

アプリを管理者権限で起動しているときのみ「アンインストールUIを表示しない」を選択できます。「すべてのアンインストールUIを表示する」を選択した場合は、アンインストール中にユーザー操作が必要なアンインストールウィザードが表示されます。

「製品をアンインストールする」をクリックするとアンインストールが開始します。

アプリを管理者権限で起動していない場合は、どの表示方法を選択していたとしても、アンインストール中にユーザーアカウント制御(エレベーション)の画面が表示されることがあります。その場合は、許可を選択することによりアンインストールを続けることができます。

アンインストールの処理方法

この機能は、製品のプロダクトコードを指定してWindows API(Windows Installer技術を使ってインストールした製品をアンインストールするためのAPI)を呼び出しています。アンインストールの処理は、すべて製品のアンインストーラーが処理します。

結果として、このアプリでは独自のアンインストール処理はしていません。アプリを正規の方法でアンインストールすることと同等です。 そのため、この機能を使うことによるシステムへの悪影響はほとんどないと考えます。システムへの悪影響はアプリ側のインストーラーの品質次第です。

製品のインストーラーの詳細を確認する機能

メイン画面に製品のインストーラー一覧を表示しています。しかし、各製品の更新インストーラーの詳細情報を確認する手段を用意していませんでした。

バージョン0.3.0では、各製品インストーラーの詳細情報を確認できます。

メイン画面上の「製品の詳細」ボタン

メイン画面で製品のインストーラー一覧から、インストーラーを選択し「製品の詳細を表示する」ボタンをクリックすると製品詳細画面が表示できます。また、一覧の製品インストーラーをマウスでダブルクリックすることでも製品詳細画面が表示できます。

下記が製品詳細画面となります。

製品詳細画面

この画面では、更新インストーラーの一覧も確認できます。上記の例では、Adobe Acrobat Reader DCのインストーラーの例です。更新インストーラーが4個あり、これらが多くのストレージ領域を消費していることがわかります。

製品のインストーラーの不正状態を表示する機能

システムに登録されている本体インストーラーおよび更新インストーラーの状態が正しいかどうかの情報を表示します。

本体インストーラーのmsiファイル、更新インストーラーのmspファイルの状態を表示します。状態に問題がないときはグリーン表示()となります。本体インストーラー(msiファイル)については、存在しない、もしくは、サイズが0ときにエラー表示()となります。更新インストーラー(mspファイル)については、存在しないときにエラー表示()、存在するが、サイズ0ときに警告表示()となります。上記以外の条件もありますが、まれな条件のため説明は省略します。

メイン画面では、製品インストーラー一覧の先頭に状態が表示されます。この状態は、本体インストーラーの状態と更新インストーラーの状態を統合した状態となります。

製品インストーラー一覧での状態表示

製品詳細画面では、「インストーラーの状態」項目と更新一覧の先頭に状態が表示されます。

「インストーラーの状態」項目には、本体インストーラーの状態と更新インストーラーの状態を統合した状態を表示します。カッコ内に本体インストーラーの状態、更新インストーラー群の状態が表示されます。

「更新一覧」の先頭には、各々の更新インストーラーの状態が表示されます。

製品詳細画面での状態表示

PatchCleanerで、不要ファイルとしてmsiファイルやmspファイルを強制削除した場合は、システムに参照情報が残っているにもかかわらず、ファイルが存在しないので、エラー状態の表示になります。

このアプリでの調整機能の検討

このアプリでの調整機能とは、PatchCleanerのように、不要となっているファイルを見つけ出し、問題がないと思われる範囲で、バックアップ、または、削除して、ストレージの空き領域を増やす機能です。

ただし、PatchCleanerのように、まだ使われているファイルを削除することは避けなければなりません。

削除機能の対象となるファイルには二つのレベルが考えられます。

  • システムから参照のされていない未使用のファイル・フォルダー
  • システムから参照はされているが、存在しなくても、アンインストール処理などに影響のないファイルファイル

前者の種類のファイル・フォルダーは、削除することは特に問題ありません。この種類のファイル・フォルダーを削除するのは必須の機能となります。しかし、#4の投稿で判明したように、対象とするモバイルPCでは、66GBぐらいあるC:\Windows\Installerフォルダーの中で、未使用ファイルは54MBしかありませんでした。

このため、ストレージの空き領域を増やす目的のためには、後者の種類のファイルを削除する機能も必要となります。

現時点で想定している対象ファイルは、更新インストーラーであるmspファイルです。

どのようなmspファイルを対象とするかは、Windows Installer技術の仕組みを考慮しつつ、トライアル&エラー(試行錯誤)でアルゴリズムを検討していきたいと思います。

One Reply to “Installerフォルダーの肥大化#5 アプリにアンインストール機能を追加”

コメントを残す