2005年08月26日

perlスクリプトをWindows用GUIプログラムにする方法

 なんかだんだん何のblogだかわからなくなるような内容が続いてますが(笑)。前回の記事でperlのスクリプトを実行ファイル化&GUI化できたので、忘れないうちにやり方をまとめておきます。


前提の環境:
 前々回の記事の実行環境が出来ていること。つまりWindowsのコマンドラインでperlスクリプトが実行できることです。


実行ファイル化:
 いちばん簡単なのは、おそらくPerl2Exeを使用することです。さすがに専用プログラムなんでお手軽です。でも私のように「めったに使わないのにシェアウェアにレジストするのもなぁ」という人もいると思います(^^;。以下はそういう人向けに、フリーのPARを使用する方法です。(Perl2Exeを使うとGUI化でうまくいかないという情報もあったので、GUI化を考えている場合もPARがお薦めかも。)
 PARのインストールは、上記のサイトから最新のアーカイブ(今の時点ではPAR-0.89.tar.gz)を持ってきてperl Makefile.PL→nmake→nmake installをやるのが正しいんだと思いますが、私は諸般の事情で以下のとおりにインストールしました。

 1. Windows用のPARバイナリから、perlの版数に合うものを持ってくる。(現時点で最新のActivePerl 5.8.7build813ならPAR-0.89-MSWin32-x86-multi-thread-5.8.7.par)
 2. ファイルの拡張子をparからzipに変更して展開し、出来たファイル全てをC:\Perl\PARに入れる。(ActivePerlのインストール先をデフォルトから変更している場合は以下適宜読み替えてください。)
 3. Windowsの環境変数に以下を追加し、再ログインする。
   Path に C:\Perl\PAR\scriptを追加
   Perl5lib に C:\Perl\PAR\lib を追加
 4. CPANからScanDepsのモジュール(現時点の最新はModule-ScanDeps-0.51.tar.gz)を持ってきて展開し、perl Makefile.PL→nmake→nmake installを実行。(ちなみにnmakeはこのあたりにあるので、実行(自己解凍)して出来たファイルをPathの通ったところに置いておけばおっけー。)
 5. 以上でコマンドラインから、
    pp -o xxx.exe xxx.pl
   とか実行するとxxx.exeが作成され、perlが無い環境でも実行可能になるはずです。


GUI化:
 Tkを使うとかいろいろ方法はあるようですが、ここではWin32::GUIとWin32::GUI::Loftを使います。

 1, Win32::GUIのPPMアーカイブ(Win32-GUI-1.0-PPM-5.8.zip)を持ってきて展開し、以下を実行してインストールする。
    ppm install Win32-GUI.ppd
 2. Win32::APIのアーカイブ(Win32-API-0.41.tar.gz)を持ってきて展開し、perl Makefile.PL→nmake→nmake install。(素直にppm install Win32-APIでいいかも…。)
 3. The GUI Loftのサイトからバイナリ(Loft_binary.zip)を持ってきて展開する。PPMフォルダ以下の2フォルダで、それぞれ以下を実行する。
    ppm install Win32-GUI-AdHoc.ppd
    ppm install Win32-GUI-Loft.ppd
   これでperl側の準備はおしまい。
 4. The GUI Loftの実行ファイル(tgl.exe)を実行し、GUIを設計する。使い方は各自勉強してください(笑)。僕も見様見真似なんで。作った結果を例えばxxx.gldとして保存する。
 5. Win32::GUI対応にperlのスクリプトを書く。Win32 APIがわからないと書けない…かも。私は全然わからないので、前回のあんな簡単なプログラムでもえらい苦労しました(^^;。書いたスクリプトを例えばxxx.plで保存する。
 6. 以下のとおりにPARでコンパイルする。
    pp --gui -a xxx.gld -o xxx.exe xxx.pl
   これでGUI対応のプログラムが作成される…はず。


参考URL:(多謝)
 いやな日記:http://namazu.org/~satoru/diary/20040716.html
       http://namazu.org/~satoru/diary/20040717.html
 ラクダのステーキ:http://take4.dynsite.net/mt/archives/000019.html
 その他Googleでhitしたページ

 特にGUI化のほうについては、「いやな日記」さんのサイトにあったサンプルを修正して、無許可でisbn2jan.exeのソース作成に利用させていただいています。まずかったらごめんなさい(^^;。


 しかしここまでやっても、出来るのはでかくて(起動が)遅いWindows専用実行ファイル、しかもperlのスクリプト自体もWin32 API専用で書かなければならないという…。素直にVisualなんとかとかDelphiとか勉強して書いたほうがよっぽどいいような気がしてきた(笑)。まぁ面白かったからいいか(^^;。


posted by たかき at 01:24| Comment(4) | TrackBack(0) | パソコン | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
 書き忘れ。perlのppmをイントラネットなどのProxy内から実行する場合は、あらかじめ以下の指定を行うことが必要です。
  SET HTTP_proxy=http://プロキシサーバ名:ポート番号
  SET HTTP_proxy_user=ユーザ名 (必要ならば)
  SET HTTP_proxy_pass=パスワード (必要ならば)
Posted by たかき at 2005年08月26日 09:41
初めまして。

突然で恐縮ですが、お仕事を依頼することは可能でしょうか?

ご返答いただけましたら、幸いです。
Posted by Hachi at 2008年09月29日 20:23
コメントどうもです。お返事が遅れてすいません。
この記事にコメントということはPerl関係の話でしょうか? いずれにしてもこのBlogは趣味の範疇で、お仕事は別にあるので残念ながら無理です。
Posted by たかき at 2008年10月05日 02:25
Perlにもう何年もお世話になっている人ですが、やっぱりGUIは別言語で組んだほうがよさそうですね。Pythonとかはまだスクリプト言語の中でも使えそうかな?
Delphiは開発環境がちょっとアレなので関数型が得意な人は定番のCやJavaですね。
Posted by 通りすがり at 2010年08月05日 21:52

この記事へのトラックバック