アンインストーラ作成日記 前編 - 「プログラムの追加と削除」へ登録 [プログラミング]
仕事で作っていたソフトウェアで、客から「インストーラを作ってくれ」との要望が発生。
「適当なディレクトリにコピーするだけだから、不要では?」とも思ったのですが、開発費がちゃんと出るので作ることになりました。
「(業務で使用するソフトウェアだから消すことは無いので)アンイントーラは必要ない」との事だったので、ディレクトリ選択ダイアログを表示して、そこにファイルをコピーするだけのチャチなインストーラを作成しました。
数ヵ月後。
客から「アンインストーラを作ってくれ」との要望が発生。
要らないって言ったじゃんと思いつつも、今度も開発費がちゃんと出るので作ることに。
ソフトウェアのアンインストールと言えば、コントロールパネルの「プログラムの追加と削除」から行うのが普通(?)なので、「プログラムの追加と削除」にアンインストーラの登録を行うことにします。
「プログラムの追加と削除」への登録はレジストリの操作で行います。
レジストリキー
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
の下に適当な名前のキーを作成。
作成したキーに次の名前の値を作成します。(どっちも文字列型)
DisplayName UninstallString 「DisplayName」には、「プログラムの追加と削除」に表示される名前を指定。 「UninstallString」には、アンインストールを行う実行ファイルのパスを指定。
さて、
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
の下に『適当な名前のキー』を作成すると、さらりと言ってますが、これが意外に面倒で、
- 他のプログラムが使用している名前を使ってはいけない。
- 同じプログラムを同じディレクトリに上書きでインストールする時は、同じ名前にする。
- 同じプログラムを違うディレクトリにインストールする時は、違う名前にする。
- 同じプログラムが違うディレクトリに複数インストールされている時に、そのうちのどれか一つに上書きインストールする時は、上書きされるものと同じ名前にする。
ってな感じになります。
と、まぁ、アンイントーラの作成と言いつつ、これはインストーラが行う作業なのですが、これで、「プログラムの追加と削除」にプログラムが登録され、「削除」ボタンで、「UninstallString」に指定した実行ファイルが起動するようになります。
「UninstallString」に指定した実行ファイルでは、インストールしたファイルを削除する等のアンインストール処理をする訳ですが、この時、「プログラムの追加と削除」に登録する時に作成したレジストリキーを自分で削除しないといけません。
今日の一冊 | |
モモ―時間どろぼうとぬすまれた時間を人間にかえしてくれた女の子のふしぎな物語
|
はじめまして。
長年(といっても数ヶ月)の謎が解けました。
ありがとうございます。
by KAN (2006-09-22 20:44)