Perl Dev Kit

amatubu2004-11-27


POPFile の Windows 版で、タスクトレイアイコンから UI にアクセスした際にエラーが発生してしまう場合がある問題 についての検証を少しずつやってみているのだけど、ほとんど進展がない。HTML::Template の中やその周りでエラーが発生していることは確かなのだけど、どうすればエラーが解消するのかがまったくわからない状態。履歴が 1 件もない場合はどんなにアイコンのダブルクリックを繰り返しても問題は起こらないことがわかったが、解決にはつながらない。
もうひとつの条件として、タスクトレイアイコンを使用している場合というのがある。タスクトレイアイコンを使用せずに、UI にアクセスするショートカットを作成して、それをダブルクリックするようにすれば、何度繰り返しても問題はない。ということは、タスクトレイアイコンになにか問題があるのかもしれない。
そう思って、CVS から popfile-tray.pl を入手して中身を見てみると、POPFileMenu という関数の中で、その都度 UI のポート設定を調べている部分が少し気になった。これを検証するために、UI でポート設定を変えたあとに、POPFile を終了させずにタスクトレイアイコンをダブルクリックしてみたところ、変更後のポートにアクセスするようになった(POPFile 自体の設定は再起動しないと変わらないので、つながらない)。やはり呼び出されるたびに設定を確認しているようだ。この設定は、POPFile が再起動されるまで変更されないのだから、呼び出されるたびにチェックしなくてもいいはず。試しにここを変更してみることにする。

タスクトレイアイコンは、Perl Dev KitPerlTray というツールを使って作られているらしい。ということは、ソースをいじっても、実行ファイルにするためにはこのツールが必要ということか。Perl Dev Kit はもちろん有料($129〜)だが、21 日間お試しできるバージョンがあるので、こちらをダウンロードしてみた。
ダウンロードするには、ユーザ登録が必要で、登録後、本体をダウンロード・インストールした後、メールで届くライセンス登録用の実行ファイルを実行することによって使用可能となるようだ。

さて、これで実行ファイルを作る環境ができた。あとは popfile-tray.pl を変更して試してみるだけだ。Makefile を参考に PerlTray を実行してみると、めでたくそれらしい実行ファイル(popfileif.exe)を生成することができた。試しにもとのファイルと入れ替えて(その前に POPFile を終了させることを忘れずに)動かしてみると、問題なく動いた。よかった。
が、残念ながら、この改造したバージョンを使ってもダブルクリックを繰り返すと止まってしまう問題は改善されなかった。ポート設定を変更したあとで POPFile を再起動していない状態でも UI にアクセスすることはできるようになったが、問題の解決にはつながらなかった。私の改造したバージョンでは、タスクトレイアイコンは「特定の URL を開く」というだけのことしかしていないわけだから(ポートを 8080 と固定しても同じ結果だった)、この実行ファイルから POPFile が動作しているということ以外はショートカットをダブルクリックした場合と何ら変わりがないはずだ。この結果からすると、タスクトレイアイコンの実行ファイルに手を加えても効果はないということなのかもしれない。

とはいえ、なんらかの効果はあるのかもしれないので、改造したバージョンの popfileif.exe を試験公開。ソースを見たい方は、popfile-tray.pl を参照。POPFile の設定を、「コンソール表示あり」「タスクトレイアイコンあり」にしてから POPFile を終了させ、popfileif.exe を入れ替えて起動し直せば改造バージョンが起動する。
ちなみに、お試しバージョンで作成した実行ファイルは、お試し期間が過ぎると動かなくなってしまうようなので(おもしろい仕様だ)、12/17 までしか動作しないので注意。

試用期間中にまたなにかできたら報告したい。タスクトレイのアイコンと POPFile 本体を別々に動かすという方法でしか解決できないのかもしれないが……。