ふと思った時にPerlスクリプトをexeファイル化できるようにやり方を記しておく。
なおこれはexeファイル内にzip圧縮してあるスクリプトを一時フォルダに展開して実行する仕組みだった。
今回Portable版でやっているが、Portable版ではないやつでもほぼ同じ手順になる。
Strawberry Perl(Portable)の導入と実行
Strawberry Perlの導入方法について。
公式ページよりAll releasesを開く。
http://strawberryperl.com/releases.html
いろいろバージョンがあるが、今回はver 5.24.0.1 / 64bitの中の
「64bit PortableZIP edition」を使った。
記事を書いている時点でのファイルは、strawberry-perl-5.24.0.1-64bit-portable.zip になる。
(SHA1:40094b93fdab1057598e9474767d34e810a1c383)
ダウンロードしたら適当な場所に展開する。
(ちなみにzipは120MBぐらいだけど、展開すると400MBちょいあった。結構大きい。)
展開したら、portableshell.batを実行する事により、
環境変数の設定されたコマンドプロンプトが開くようになっている。
Portable版の場合、基本的にココからいろいろ実行していくことになる。
PAR::Packerモジュールのインストール
次にPerlスクリプトをexe化するモジュールのPAR::Packerをインストールする。
Strawberry Perlにはcpanm及びCPANが同梱されているので、これを使ってモジュールを入れる。
前項のように開いたコマンドプロンプトで以下のコマンドの様に実行する。
cpanm PAR::Packer --force
どうもtestで失敗するようだったので強制インストールオプションを付けている。
依存関係は問題なく入ってくれていたのでたぶん大丈夫だと思う。
PARでPerlスクリプトのexeファイル化
無事PAR::Packerのインストールが済めば、次からは
pp -o ohayou.exe ohayou.pl
のようにしてスクリプトをexe化する事ができるようになる。
(-o [出力ファイル名] のオプションを指定しない場合、a.exeに出力される。)
今回は以下のohayou.plをexeにしてテストした。
[perl]
print "Ohayou, Sekai-chan.\n";
sleep(10);
[/perl]
コマンドプロンプトからではなく、出来たexeファイルをダブルクリックしてもちゃんと起動する。
--gui
オプションを付けると実行時のコンソールを出なくできる。
--icon iconfile.ico
オプションでアイコンを変える事ができる。
その他使い方は以下のヘルプ(バージョンが古いけど)とかでチェック。
http://perldoc.jp/docs/modules/PAR-0.75/script/pp.pod
出来るexeファイルの挙動について
作った実行ファイルを実行すると、
C:\Users\(ユーザー名)\AppData\Local\Temp\par-(16進数の並び)\ に展開して実行している模様。
実行後に削除はされないみたいなので、数回だけ他の環境で実行したい、みたいなやつに使うのが良いか。
拡張子をzipに変えてアーカイバで開いても同様に元のスクリプトが取り出せるので、見られると困るようなやつにはダメかな。
コメント
[…] 参考ページ: Strawberry Perl(Portable)でPerlスクリプトのexeファイル化 […]