Perlスクリプトをexe化するPARを試してみた。

http://hamachiya.com/junk/memo_PAR.html

適当にはまちちゃんの所見てたら見つけたのでやってみた。
この手のはperl2exeとか色々あるけどやってみた感じだとコレが一番いいと思う。
注意点としてはzipを展開して実行する関係でテンポラリファイルを作る事。
スクリプト実行し終わってもそのまま放置するので手動削除しない限りゴミファイルがどんどん溜まっていく。

あとソースコードをコメント含めてそのまま突っ込むからオープンソース状態になっちゃうくらいかな。

導入方法
だいたい上の記事そのままで通った。Win7x64だったけどActivePerlはx86を選択


・まずActivePerlをダウンロード。最新版だと駄目らしいので素直にこれをインストール
公式には残ってなかったのでミラーからダウンロード
ActivePerl-5.8.6.811-MSWin32-x86-122208.msi でググれば出てくるだろう。
インストールする時はフルインストールするといいと思う。

ppm(WindowsCPANみたいなものかな?)で色々インストール
そのまんまコピペして実行。PAR使うならbribesから落とした方がいいらしい。

C:\User\j416> ppm
ppm> rep add bribes http://www.bribes.org/perl/ppm
で追加して

ppm> rep up bribes
を何度か叩いて優先順位を一番上に

色々必要なものをインストール。Compress-Zlibは1.33で最新と言われた。上の記事の時点で既に1.34出てるはずなんだけど・・・。
まあ問題ないだろう。

ppm> install File-Temp
ppm> install Compress-Zlib
ppm> install Archive-Zip
ppm> install Module-ScanDeps
ppm> install PAR-Dist
ppm> install Parse-Binary
ppm> install Win32-Exe
ppm> install Digest-SHA
ppm> install Module-Signature
ppm> install PAR

最後にPARインストールして終わればquitしてppmから抜ける。
これで通常は終わりみたいだけど、最近のPARにはppがつかないらしいので、適当に記事通り持ってくる。

http://www.cpan.org/authors/id/A/AU/AUTRIJUS/PAR-0.89-MSWin32-x86-multi-thread-5.8.6.par
を落としてzipにして展開した物をC:\Perl\PARへ。
そして以下の環境変数を追加。Perl5libは見つからなかったので新規で追加した。

Path:C:\Perl\PAR\script
Perl5lib:C:\Perl\PAR\lib

Pathを追加する時は区切りとして「;」を忘れずに。
追加したらコマンドプロンプトを再起動してインストール完了。

・実行
> pp -o hoge.exe hoge.pl
でexeが生成される。-iでアイコン指定できるらしいけどうまく行かなかった。
あと--guiコマンドプロンプトの画面を消せる。
system関数とかも問題なく使えるらしい。ActivePerlで出来ることはだいたいできるかな?
あと、最初に書いたけどテンポラリファイルを大量に作る。
C:\Users\(ユーザ名)\AppData\Local\Temp\par-(ユーザ名)\
以下にcache-(何かのハッシュ値)というディレクトリを作るので、定期的に掃除した方がいいかも知れない。