AppでInstallerフォルダー内の未使用ファイルの確認ができるようになりました。同様のアプリであるPatchCleanerと解析結果の比較をしてみました。今回は、アプリにもう少し機能を追加します。Appのバージョン0.4.0は、リリースページからダウンロードできます。Appのバージョン0.3.0は、リリースページに記載があるように、製品のアンインストール機能を実装しました。製品の更新を個別にアンインストールする機能はありませんでした。バージョン0.4.0では、製品の更新を個別にアンインストールする機能を追加しました。このバージョンでは、リリースページに記載があるように、以下の機能を実装しました。各機能の詳細は、リリースページの説明を参照してください。製品詳細画面に製品の更新インストーラー一覧を表示しています。ストレージの空き領域を増やす目的なら、必要のない更新インストーラーを削除できる機能があると便利になるだろうと考え、製品の更新を個別にアンインストールする機能を追加しました。この機能はシステムに変更を加えます。製品の正規のアンインストーラーを使ってアンインストールするため、システムを破壊してしまうことはないと思います。アンインストールするためには、アンインストールしたい製品の更新のチェックボックスをチェックします。この時、複数の製品の更新を選択することもできます。つぎに「選択した更新をアンインストールする」ボタンをクリックします。製品詳細画面上の「製品の更新のアンインストール」ボタンボタンをクリックすると、アンインストール前の確認画面が表示されます。確認画面には、選択した更新インストーラーの一覧が再度表示されます。このとき、アンインストールできない更新インストーラーであった場合、選択が解除されており、再選択はできなくなっています。確認画面では、アンインストールする製品の更新に間違いがないか確認します。アンインストール中に表示するUIの種類を選択しします。アプリを管理者権限で起動しているときのみ「アンインストールUIを表示しない」を選択できます。「すべてのアンインストールUIを表示する」を選択した場合は、アンインストール中にユーザー操作が必要なアンインストールウィザードが表示されます。「製品の更新をアンインストールする」をクリックするとアンインストールが開始します。アプリを管理者権限で起動していない場合は、どの表示方法を選択していたとしても、アンインストール中にユーザーアカウント制御(エレベーション)の画面が表示されることがあります。その場合は、許可を選択することによりアンインストールを続けることができます。Installer技術を使ってインストールした製品をアンインストールするためのAPI)を呼び出しています。アンインストールの処理は、すべて製品のアンインストーラーが処理します。結果として、このアプリでは独自のアンインストール処理はしていません。アプリの更新を正規の方法でアンインストールすることと同等です。そのため、この機能を使うことによるシステムへの悪影響はほとんどないと考えます。システムへの悪影響はアプリ側のインストーラーの品質次第です。必要な製品の更新(セキュリティ修正やバグ修正など)の場合、アンインストールすることによって、古い状態に戻ってしまいます。このような製品の更新インストーラーは、アンインストールすべきではありません。アンインストールしても問題がない更新インストーラーは、インストールはされているが、他の更新インストーラーによって置き換わっているもののみです。製品の更新インストーラーは、一つの製品に対して複数用意されることがあります。ひとつの製品に対して複数の更新インストーラーがインストールされている場合、新しい更新インストーラーが古い更新インストーラーを置き換えていることがあります。この場合、古い更新インストーラーはシステム上にインストールされていますが、実質は未使用の状態になります。未使用の状態の更新インストーラーは、アンインストールしても影響はありません。これにより、ストレージの空き領域を増やすことができます。更新インストーラーの使用状態は、以下の絵のように製品詳細画面の赤い枠内に表示されます。Readerは、未使用状態の更新インストーラーが複数あることがわかります。表示できている項目だけでも、88.2MBと66.3MBの未使用のファイルがあります。ひとつの製品内での値を合計した値は、以下の絵のように製品詳細画面の赤い枠内に表示されます。Readerは、更新ファイル全体は458MBですが、その中の228MBは未使用状態の更新インストーラーであることがわかります。これら未使用の状態の更新インストーラーを削除すれば、ストレージの空き領域を増やすことができます。この用途に、バージョン0.4.0で追加した「製品の更新インストーラーのアンインストール機能」が利用できます。今回のバージョンでは、製品の更新をアンインストールする機能を追加しました。製品の更新には、アンインストールが不可のものもあります。上記の例のように「アンインストールの可否」が「否」のものは、アンインストールができません。未使用の更新がアンインストール不可であると、未使用の更新をアンインストールして、ストレージの空き領域を増やすことができません。今回の「製品の更新をアンインストール」機能だけでは、このアプリの当初の目的である、「ストレージの空き領域を増やすこと」が果たせません。次は、この問題に対処する方法を考えていきたいと思います。Installer技術の仕組みを考慮しつつ、トライアル&エラー(試行錯誤)でアルゴリズムを検討していきたいと思います。