2007/10/7 日曜日

PerlのEXE化

Filed under: Perl — tiny-p @ 19:40:30

参考(というか記録のため丸々コピー):http://hamachiya.com/junk/memo_PAR.html

PARというものを使えばperlスクリプトがwindowsの実行形式(exe)化できるらしい。

仕組みはこんな感じ。

Perlインタープリタを含む必要ファイルを全てexeにまとめる(実はzip)
exeが実行されると、裏で展開して、中のPerlインタープリタ(dll)でスクリプトが実行される。
なるほどなるほどー。
いちいちActivePerlをインストールして云々とかしなくても
いきなり実行できちゃうようになるわけだね!すてき!

※ただし拡張子をzipに変えるだけで、中のソースが覗けるけど

で、さっそく使ってみた。ちょっと苦労した!
よって以下はインストールメモだ!

■ActivePerlのインストール現在の最新版は5.8.7.813。入れちゃダメ。
素直にこれをインストールしたら最終的にPARで作ったexeを実行した時に

「プロシージャエントリポイントPL_memory_wrapがダイナミックリンクライブラリperl58.dllから見つかりませんでした。」

とかよくわからないエラーがでてしまう。
(モジュールとか使わない簡単なスクリプトは動いたけど)

ここで大ハマりしたあげく、ActivePerlのバージョンを落とすことで解決した。

そんなわけで、
http://ftp.activestate.com/ActivePerl/Windows/5.8/
↑ここのActivePerl-5.8.6.811-MSWin32-x86-122208.msiをgetしてインストール!

■ppmの設定ppmってのはperlのモジュールを、
簡単に探してダウンロード&インストールしたりアンインストールしたりするやつ。
ActivePerlについてくる。

そのままだとモジュールをActiveStateに探しにいくようになっているので、
ここにbribesってところを追加して、優先順位も上げておく。

※PAR FAQより。

c:\>ppm3
ppm> rep add bribes http://www.bribes.org/perl/ppm
ppm> rep up bribes
ppm> rep up bribes

■PARに必要なモジュールのインストールすべてppmを使って行うよ!

(※印は僕がインストールしたバージョン)

ppm> install File-Temp
※0.16
ppm> install Compress-Zlib
Note: Package ‘Compress-Zlib’ is already installed.
ppm> upgrade Compress-Zlib -install -precious
Compress-Zlib 1.33: new version 1.34 available in bribes
※1.33 → 1.34
ppm> install Archive-Zip
※1.14
ppm> install Module-ScanDeps
※0.51
ppm> install PAR-Dist
※0.07
ppm> install Parse-Binary
※0.09
ppm> install Win32-Exe
※Test-Simple → 0.60, Win32-Exe → 0.08
ppm> install Digest-SHA
※5.28
ppm> install Module-Signature
※0.44
■PARのインストールこれも引き続きppmでインストール!

ppm> install PAR
※0.89
ppm> q
ちゃんとインストールできたかな!

c:\>pp -V
Perl Packager, version 0.12 (PAR version 0.89)
(略)

たぶんok!!

■さっそくテストしてみるメモ帳で簡単なスクリプトを作成。

hello.pl

print “こんにちはこんにちは!\n”;
sleep(1);
print “ぼくはまちちゃん!\n”;
sleep(1);
ふつうにPerlで実行してテスト。

c:\>perl hello.pl
こんにちはこんにちは!
ぼくはまちちゃん!
うん。ふつうに動く。
じゃあ次は、保存してexe化してみる。

c:\>pp -o hello.exe hello.pl
hello.exeが生成されるので、ダブルクリックして実行!

イヤッッホォォォオオォオウ!

ppのオプション(実行時にコンソールを出さないようにする)
pp –gui -o hoge.exe hege.pl

(exeのアイコンを指定する)
pp -i hoge.ico -o hoge.exe hege.pl

(データファイルをひっくるめる)
pp -a data.txt -o hoge.exe hege.pl

(使うモジュールを指定してやる) ※うまく検出されなかった時など
pp -M Hamachiya::Konnichiha -o hoge.exe hege.pl

(ヘルプ)
pp -h
※よく知らないけど -more- は [enter] → [space] で一画面進むみたい

Perl:Win32-GUI&EXE化

Filed under: Perl — tiny-p @ 19:38:19

参考(というか記録のため丸々コピー):http://cubic9.com/Devel/Perl/Win32-GUI/

PerlでWindows用の単体で配布可能なGUI付きソフトを作ってみる。

■必要なもの

■インストール

  1. ActivePerl5.8系をインストール
  2. 再起動 (パスが通るように)
  3. Win32-GUI-0.99_1-PPM-5.8.zipをc:\に解凍
  4. Loft_binary.zipをc:\に解凍
  5. コマンドプロンプト起動 (Win+r, cmd)
  6. Win32::GUIをインストール

    cd Win32-GUI-0.99_1-PPM-5.8 ppm install Win32-GUI.ppd cd .. rmdir /s Win32-GUI-1.0-PPM-5.8

  7. The GUI Loftをインストール

    cd TheGUILoftPPMAdHoc ppm install Win32-GUI-AdHoc.ppd cd TheGUILoftPPMLoft ppm install Win32-GUI-Loft.ppd

  8. Win32::APIをインストール

    ppm install Win32-API

■使ってみる

  • \TheGUILoft\tgl.exe で GUIを作成。launcher.gld として保存。
  • いやな日記さんのコードを入力。launcher.pl として保存。
  • launcher.gld と launcher.pl を同じフォルダに突っ込んで、launcher.pl を実行。

■exeにする
以下が必要

■CPANをインストール
以下が必要

  1. 上記を解凍して次のものをc:\binにコピー。
    • gzip.exe
    • tar.exe
    • NMAKE.EXE
    • NMAKE.ERR
  2. 環境変数にc:\binを加える。
  3. コマンドプロンプト起動 (Win+r, cmd)
  4. CPANの初期設定
    perl -MCPAN -e shell

    Enter連打。gzip,tar,makeの箇所だけは慎重に。

■PARをインストール
適当に解凍

cd PAR-0.86 perl Makefile.PL nmake nmake install cd .. rmdir /s PAR-0.86

■exeに変換

pp --gui -a launcher.gld -o launcher.exe launcher.pl

■備考

  • Encode.pm使うときはuse Encode::JP;と記述すること。
  • ワンライナーもexeに出来る。
    pp -o hello -e 'print "hellon"'

■アイコンを変える

pp -g -i launcher.ico -a launcher.gld -o launcher.exe launcher.pl

でも変えられるが、試したところ一気に数百kByte増えてしまったので、 KH IconRewrite98を使う。

« 前のページ

Copyright (C) 2007 tiny-p. All Rights Reserved.