PerlスクリプトのEXE化

PerlスクリプトのEXE化については、いろいろな方がブログ等で書かれていますが、ちょっとハマってしまったのでメモしておきます。

【参考にしたページ】
http://blog.remora.cx/2010/02/par-activeperl-5101-build-1007.html

【私のPC環境】
Windows7 Home Premium x64
ActivePerl v5.12.2 build1203 Win32版(あえてWin64版ではなくWin32版にしました)

【インストール前の準備】
私のPCには、他のソフトウェア開発のためにVisual Studio 2010 Expressをインストールしています。c++コンパイラやnmake.exeを使うために、Visual Studioのインストールフォルダにpathを通していました。この状態だと PAR::Packer のコンパイルが失敗するので、Path環境変数から一時的にVisual Studio関係の設定を削除しました。
この準備をした上で PAR::Packer をコンパイルすると、MinGWに含まれるgccやdmakeが使われるようです。

【インストール手順】
1) Perl Package Managerを使って、以下のモジュールをインストールする。

  • Module::ScanDeps
  • Win32::Exe
  • Parse::Binary
  • Getopt::Argvfile
  • PAR
  • PAR::Dist
  • MinGW

Perl Package Mangerでインストールするモジュールの名前を入力するとき、:: の代わりに - を書きます(例: Module::ScanDeps → Module-ScanDeps)。


2) コマンドプロンプトを開いて、下記のコマンドを実行する。

C:\> cpan -fi PAR::Packer

※上記コマンド実行完了までに、私のPCで15分程度かかりました(CPU:Core2 Quad 2.5GHz, Mem:4GB)。


【EXE化の手順】
Perlスクリプトのあるフォルダでコマンドプロンプトを開いて、以下の書式で pp コマンドを実行する。

C:\scripts> pp <Perlスクリプト・ファイル名> -o <EXEファイル名>

(実行例)

C:\scripts> pp cr-u.pl -o cr-u.exe