Web、サーバ、ソフトウェア、バグ・脆弱性 などの情報を何人かで集まって書いていく IT/Web情報系ブログ

Strawberry Perl(Portable)でPerlスクリプトのexeファイル化

投稿日:   最終更新日:2017/01/15  投稿者:エレモ

ふと思った時に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ちょいあった。結構大きい。)
strawperl-explorer

展開したら、portableshell.batを実行する事により、
環境変数の設定されたコマンドプロンプトが開くようになっている。

Portable版の場合、基本的にココからいろいろ実行していくことになる。
strawperl-shellcmd

PAR::Packerモジュールのインストール

次にPerlスクリプトをexe化するモジュールのPAR::Packerをインストールする。
Strawberry Perlにはcpanm及びCPANが同梱されているので、これを使ってモジュールを入れる。

前項のように開いたコマンドプロンプトで以下のコマンドの様に実行する。
cpanm PAR::Packer --force

どうもtestで失敗するようだったので強制インストールオプションを付けている。

依存関係は問題なく入ってくれていたのでたぶん大丈夫だと思う。
strawperl-cpanm-par

スポンサーリンク

PARでPerlスクリプトのexeファイル化

無事PAR::Packerのインストールが済めば、次からは
pp -o ohayou.exe ohayou.pl

のようにしてスクリプトをexe化する事ができるようになる。

(-o [出力ファイル名] のオプションを指定しない場合、a.exeに出力される。)
今回は以下のohayou.plをexeにしてテストした。

print "Ohayou, Sekai-chan.\n";
sleep(10);

コマンドプロンプトからではなく、出来たexeファイルをダブルクリックしてもちゃんと起動する。

strawperl-par-packed
--gui オプションを付けると実行時のコンソールを出なくできる。
--icon iconfile.ico オプションでアイコンを変える事ができる。

その他使い方は以下のヘルプ(バージョンが古いけど)とかでチェック。
http://perldoc.jp/docs/modules/PAR-0.75/script/pp.pod

出来るexeファイルの挙動について

作った実行ファイルを実行すると、
C:\Users\(ユーザー名)\AppData\Local\Temp\par-(16進数の並び)\ に展開して実行している模様。
実行後に削除はされないみたいなので、数回だけ他の環境で実行したい、みたいなやつに使うのが良いか。
拡張子をzipに変えてアーカイバで開いても同様に元のスクリプトが取り出せるので、見られると困るようなやつにはダメかな。

strawperl-exe-view

- Perl ,

Comment

  1. […] 参考ページ: Strawberry Perl(Portable)でPerlスクリプトのexeファイル化 […]

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事