DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

1.VBのインストーラで必要な機能は何か

VBで作成したソフトを配布するインストーラに必要な機能及びあったらいいなと思う機能を私なりの考察で挙げてみます。

1.ファイルのコピー

なんて当たり前なんでしょうか。しかしただ「ファイルのコピー」といっても、様々な方法があるでしょう。ここでは単純に「ファイルのコピー」とだけいっておき、詳しい内容については後ほど(8.及び9.)検討します。

2.ショートカットの作成

これもインストーラとしては当たり前の機能ですね。しかしインストーラの中には、ショートカットを作成する場所が限定されたもの(スタートメニューのプログラム以下や、デスクトップ等)など、制限の多いものもたくさんあります。

3.コントロールパネルからのアンインストール

コントロールパネルの「アプリケーションの追加と削除」からアンインストール出来るようにする機能です。そのためにはインストール時にアンインストールするためのソフト(以下アンインストーラ)もインストールする必要があり、あまりにバイト数が大きなアンインストーラだとかなり迷惑になるため、出来るだけ小さいものが望ましいでしょう。

4.OCXをレジストリに登録

VBで多用される"OCX"(およびDLLやTLB)ファイルですが、これはレジストリに登録しないと使用することが出来ません。(ちなみに登録するためには一般的に"REGSRV32.EXE"というソフトを使用する。これは大抵SYSTEMディレクトリに入っており、VSのCD-ROMにも入っている。また、ソースもサンプルとして公開されており、"REGSRV32.EXE"自体も再配布可能らしい。)そのため、OCXを使用するVBソフトをインストールするためにはOCXの登録が必要かと思われがちだが、実はVBで作成されたソフトは始めの起動時にOCXが登録されていないと自動的に登録するようになっているらしいので、OCXファイルを特別な場所に置かない限りインストーラにこの機能は必要ないようです。

5.レジストリ情報の削除

レジストリに保存していた設定などを削除します。これをしないとレジストリが肥大化するため(微々たるものかもしれないが)、レジストリを使用するくせにこれを削除しないソフトは嫌われます。ただし、レジストリの下手な部分を削除すると大変なことになってしまうため、細心の注意が必要です。

6.インストールしたフォルダごと削除

インストーラの中にはアンインストール時にインストールしたファイルしか削除しないものが数多くあります。これはほとんどの場合、アンインストールしてもその残骸を残す結果となります。なぜなら、ヘルプファイル(*.hlp)を開くと嫌でも出来てしまうGIDファイルがあるだけで、そのフォルダも残したままにしてしまうからです。しかし、フォルダごと削除してしまうことはかなりの危険も伴います。たとえば、エンドユーザが間違えて重要なファイルがあるフォルダにソフトをインストールしてしまった時、アンインストールでこの重要なファイルをも削除してしまうことになります。できればインストールしていないファイルを削除する時にはエンドユーザに問い合わせてほしいものです。

7.バージョンを比較してコピー

ファイルのバージョン(又はタイムスタンプ)を比較してより新しいものだけをコピーする(あるいは問い合わせる)機能です。常に新しいファイルしかコピーしないとなると、バージョンダウンしたいときには面倒かもしれませんが、無条件で上書きコピーということになると、VBランタイムのような共有ファイルを古いバージョンで置き換えてしまうことにもなりかねず、かなりひんしゅくものです。VBランタイムをインストールする時は必ず必要な機能でしょう。

これから先はなくてもいいかなと思えるような機能です。

8.コピーに失敗したファイルをパソコン再起動時に置き換える

インストール時にEXEやDLLなどのファイルが使用中の場合、これらのコピーは当然失敗します。しかしインストーラの中には、パソコンの再起動時にこれらのファイルを自動的に置き換えてくれる機能を持ったものも数多くあります。VBランタイムをインストールする時はあってほしい機能です。

9.関連付け

インストールするソフトにある拡張子を関連付ける機能です。拡張子は勝手に関連付けられるとかえって困るため、ユーザーに問い合わせる形でなければ必要ないような気がします(しかしそのようなインストーラは少ない)。必要ならばアプリケーション自身がこの機能を持つべきではないでしょうか。

10.インストール前にREADMEを表示

使用条件があるときなどはもちろん必要でしょうが、そうでなくてもこれが何なのかを示すためにも必要だと思われます。

11.SharedDLLsに登録

レジストリのSharedDLLs(たぶん"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs"あたりにある)に登録する機能です。SharedDLLsには共有ファイルのフルパスとそのファイルを使っているソフトの数が登録されています。この機能に対応したインストーラは、インストール時にその数を一つ増やし、アンインストール時には逆に一つ減らします。そして、アンインストール時にこのファイルを使っているソフトが1つもなくなったときは、そのファイルを削除します。もちろん共有ファイルを使っている全てのソフトがSharedDLLsに登録しているとは限らないので、判断を誤る可能性もあるでしょう。OCXをインストールするにはあって欲しい機能です。

12.レジストリに書き込む

インストール時に任意の値を任意の場所のレジストリに書き込む機能です。9.の関連付けを独自に行ったり、"RunServices"からソフトを起動させたいときなど特別な事情があるときに必要となるかもしれませんが、普通は使わないでしょう。

 

その他に安定性や、操作性などもあるでしょうが、ここでは機能のみに絞らせていただきました。


トップページに戻る

メニューに戻る

次へ