Installerフォルダーの肥大化#10 アプリに製品の更新の削除の機能を追加

前回の投稿で、Installer Adjustment Appで簡単調整の二つ目の調整機能を追加しました。今回は、UIの改善と製品の更新の削除機能を追加しました。

Installer Adjustment App 0.8.0

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

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

Installer Adjustment Appの前バージョン0.7.1で、リリースページに記載があるように、簡単調整機能のUIに二つ目の調整機能を追加しました。今回は簡単調整機能の三つ目の調整機能は追加できませんでしたが、その機能のベースになる「製品の更新の削除機能」を有効化しました。

このバージョンでは、以下の機能を実装しました。

  • 使い勝手の改善
  • 高DPI対応
  • 製品の更新インストーラーの削除機能を追加

各機能の詳細は、リリースページの説明を参照してください。この投稿では、追加した「製品の更新の削除機能」について記載します。

製品の更新の削除機能

製品の詳細画面の「更新一覧」の領域には、この製品に対してあてたことある更新インストーラーが表示されます。

製品詳細画面(バージョン0.8.0)

更新インストーラーのアンインストールの可否

更新インストーラーは、単体でアンインストールが可能なものと、単体ではアンインストールできず、製品本体のアンインストールで同時にアンインストールされるものがあります。どちらのタイプの更新インストーラーであるかは、更新一覧の「アンインストールの可否」の項目でわかります。

更新インストーラーの状態

製品によっては、更新インストーラーが複数適用されていることがあります。そのような場合、システムにインストールはされているが、他の更新インストーラーで置き換えられており、実際には使用されていない更新インストーラーもあります。更新インストーラーが「使用中」であるか「未使用」であるかは、更新一覧の「状態」の項目でわかります。

このような「未使用」の更新インストーラーは、システムのストレージの領域を無駄に消費していることになります。

未使用の更新インストーラーのアンインストール

これらの未使用の更新インストーラーは、単体でアンインストールすることにより、ストレージの空き領域を増やすことができます。

単体のアンインストールは、この製品の詳細画面の「選択した更新をアンインストールする」ボタンからできます。

ただ、前述したように単体のアンインストールが許可されていない更新インストーラーが存在します。

また、更新インストーラーのアンインストールが許可されているものでも、実際にアンインストールを開始すると、製品インストーラーのメディアが要求されたりするものもあります。製品インストーラーのメディアが用意できる場合は、その更新インストーラーの単体でアンインストールが完了できます。

しかし、製品インストーラーのメディアを用意できないこともあります。この場合、更新インストーラーの単体でアンインストールは失敗します。

アンインストールできない更新インストーラーの対処法

更新インストーラーのファイル(mspファイル)は、 C:\Windows\Installerフォルダーの直下に保存されています。「未使用」の更新インストーラーがアンインストールできない場合、ストレージの領域を無駄に消費していることになります。

この場合、どうすればストレージの空き領域を増やすことができるでしょうか?

いろいろ試したところ、経験則になりますが、「未使用」の更新インストーラーのファイルは存在していなくても、製品のアンインストールなどには影響ありません。

気づいたと思いますが、空き領域を増やすためには、「未使用」であることがわかっている更新インストーラーのファイル(mspファイル)を削除すればよいです。

使用中の更新インストーラーの削除

「未使用」ではなく、「使用中」の更新インストーラーを削除したときはどうでしょうか?

「使用中」の更新インストーラーの削除の場合は問題が発生することがわかっています。具体的には、製品をアンインストールしたときに製品のファイルが完全に削除されないことがあります。アンインストールの処理自体は正常に処理が完了するのですが、アプリのインストール先であるProgram Filesフォルダーにファイルが残ったりします。

更新インストーラーファイルを削除するときのバックアップ

未使用の更新インストーラーであれば、削除しても問題ないことが、経験則から分かりました。

しかし、あくまで経験則です。Windows Installer技術を開発したマイクロソフトが保証していることではありません。

更新インストーラーのファイルを削除した以降に、問題が発生する可能性があるのは、製品のインストーラーを起動して以下の操作をした時です。

  • 製品のアンインストールのとき
  • 製品の修復時
  • 製品の構成変更時

経験則で、特に問題は出ていないのですが、たまたま、遭遇していないだけかもしれません。

そのため、問題が発生したときのためにバックアップを残すのは重要となります。

もし、問題が発生したときは、バックアップを取ってあれば、それを元の場所に戻すことにより、元の状態に戻せます。元の場所に戻した後に、上記の操作をすれば問題ありません。

バックアップを残していたら、ストレージの空き領域を増やすことができないと思うかもしれません。しかし、バックアップを残す場所はどこでもよいです。バックアップをUSBメモリやSDカードなどの外部接続メモリに残せは、システムのストレージの空き領域を増やすことができます。

また、更新インストーラーファイルのバックアップは、PCからその製品をアンインストールしたときはもう必要がなくなります。バックアップを削除してもよいです。

このアプリでの更新インストーラーの削除

このアプリでは、更新インストーラーのファイル(mspファイル)を削除するときは、完全は削除しません。ファイルサイズを0にするのみです。

更新インストーラーのファイルは、C:\Windows\Installerフォルダーの直下にあります。そのファイル名は、xxxxxx.mspの形式です。xxxxxxの部分は、インストール時にシステムでランダムな名前(例: 968be1.msp)をつけます。

もし、更新インストーラーのファイルを完全に削除してしまうと、その後に、別の更新インストーラーをインストールしたときに、 C:\Windows\Installerフォルダーの配下に削除したファイルと同じ名前で、新たな更新インストーラーファイルが作成される可能性があります。

こうなってしまうと、削除時にバックアップを取っていたとしても、なんらかの問題が発生したときにバックアップしたファイルを C:\Windows\Installerフォルダー に戻すことができなくなります。

また、製品をアンインストールしたとき、更新インストーラーファイルのファイル名が同じため、間違って、新しい更新インストーラーファイルを削除してしまいます。

もし、サイズ0であっても、ファイルを残しておけば、同じ名前で別の更新インストーラーのファイルが作成されることはありません。

そのため、このアプリでは、更新インストーラーのファイルの削除の場合には、実際には削除せず、ファイルサイズを0にする処理をしています。

サイズが0であれば、当初の目的である「ストレージの空き領域を増やすこと」は実現できているので問題ありません。

このアプリで更新インストーラーのファイルを削除する

アプリの0.8.0で製品の更新インストーラーの削除機能を追加しました。具体的には製品の詳細画面に「選択した更新ファイルを削除する」ボタンを追加しました。

製品詳細画面の更新ファイルの削除ボタン

これは、選択した更新インストーラーのファイル(mspファイル)を削除する機能です。アンインストールができない更新も削除できます。ボタンをクリックすると、削除前の確認の画面が表示されます。

この機能は、主にアンインストールできないの更新ファイルを削除するために利用できます。削除対象は「状態」が「未使用」の更新ファイルを想定します。「状態」が「使用中」の更新ファイルも削除することは可能ですが、製品のアンインストールなどに悪影響があることがあるため、「状態」が「使用中」の更新ファイルは削除しないことを推奨します。

項目の選択

削除から除外したい製品の更新があればチェックボックスをアンチェックすることで除外することが可能です。

この機能を使うためには、アプリを管理者権限で起動する必要があります。C:\Windows\Installer\フォルダー内の変更をするには管理者権限が必要なためです。管理者権限でアプリを起動していない場合は、下記の画面のように、「アプリを管理者権限で再起動する」ボタンがあるので、管理者権限で再起動してください。

更新ファイルの削除の確認画面(非管理者)

アプリを管理者権限で起動している場合は、下記の画面のように、「アプリを管理者権限で再起動する」ボタンは表示されません。

更新ファイルの削除の確認画面(管理者)

バックアップの設定

この確認画面には、ファイルのバックアップの設定があります。バックアップを残しておくと、必要な更新ファイルを誤って削除してしまった場合に、元に戻すことができます。もしものためにバックアップを残しておくことを強く推奨します。

バックアップフォルダーには、以下の二つのフォルダーが作成されます。

  • Installerフォルダー
  • InstallerAdjustmentAppフォルダー

前者のフォルダーには、C:\Windows\Installer\フォルダーから削除した更新ファイルが同じフォルダー構成でバックアップされます。もし、バックアップを使って復元したい場合は、このInstallerフォルダーをそのまま、C:\Windows\フォルダーにコピーすれば復元できます。

後者のフォルダーには、削除した更新ファイルの情報(ファイルパス、ファイルサイズ、変更日時など)がXMLファイルで保存されます。後で、どのような更新ファイルが削除されたのか確認できます。

確認画面で、「製品の更新インストーラーファイルファイルを削除する」ボタンをクリックすると、実際に削除処理が始まります。ただし、更新の「状態」が「使用中」のものが含まれている場合、削除を実行する前に下記の確認画面が表示されます。

使用中の更新ファイルを削除しようとしたときの警告画面

この画面が表示された場合は、「いいえ」をクリックして、削除対象をもう一度確認してください。「はい」をクリックしたときは、「使用中」の更新も含めて削除が実行されます。

結果画面

削除が完了すると、結果画面が表示されます。削除が成功したもの・失敗したものが分けて表示されます。この画面からはバックアップフォルダーをエクスプローラーで開くこともできます。

簡単調整に追加予定の機能

今回は、製品の更新インストーラーを個別に削除する機能を追加しました。次回は、この更新インストーラーを削除する機能を発展させた機能を簡単調整に追加したいと思います。

アプリのメイン画面の未使用の更新ファイルの削除ボタン(バージョン0.8.0)

簡単調整からの未使用の製品の更新インストーラーファイルの削除機能は、すべての製品に対して、アンインストールができない未使用の更新インストーラーを抽出して、削除できる予定です。

また、アンインストールが可能な未使用の更新インストーラーについても、追加で削除することもできます。これは、アンインストールが可能な更新インストーラーでも、アンインストールに失敗することがあるためです。


今回のバージョンでは、簡単調整機能の三つ目の調整機能は追加できませんでしたが、その機能のベースになる「製品の更新の削除機能」を有効化できました。

次のバージョンでは、 簡単調整機能の三つ目の調整機能を有効化したいと思います。有効化するときは、新たな投稿をしたいと思います。

“Installerフォルダーの肥大化#10 アプリに製品の更新の削除の機能を追加” への1件の返信

コメントを残す