PHPでbamcompileを使ってEXEプログラムを生成

(1/1)
前回は PHPと WinBinder を使ってWindowsアプリを作ったが、このままではPHPやWinBinderがインストールされていないWindows環境では動作しない。
そこで今回は、bamcompile を使って、Windows上ででネイティブに実行できるEXEプログラムにコンパイルする方法を紹介する。

サンプル・プログラム

bamcompileの準備

Bambalam PHP EXE Compiler から ダウンロードし、ここでは、"C:\php4\bamcompile\" に解凍する。

bamcompile は、PHP4.4.4相当の実行エンジンをEXEプログラムに組み込み、その他必要なPHPソースやエクステンションをEXEファイル内に配置することで、単独で実行可能なEXEプログラムを生成する無償ツールだ。

C:\php4 以下の主なディレクトリ/ファイルは下記のようになっているはずである。
C:\php4
│  php-win.exe
│  php.exe
│
├─bamcompile
│      bamcompile.exe
│
├─extensions
│      php_winbinder.dll
│      php_mbstring.dll
│
├─programs
│  └─isleap3
│     │  isleap3.bcp
│     └─isleap3
│          │  isleap3.phpw
│          │  php_mbstring.dll
│          │  php_winbinder.dll
│          └─include
│                 wb_generic.inc.php
│                 wb_resources.inc.php
│                 wb_windows.inc.php
│                 winbinder.php
│
└─WinBinder
    └─phpcode
       └─include
            │  wb_generic.inc.php
            │  wb_resources.inc.php
            │  wb_windows.inc.php
            │  winbinder.php
            │
            ├─db
            │   changeLog_db.txt
            │   db_common.inc.php
            │   db_mysql.inc.php
            │   db_sqlite.inc.php
            │
            └─fi
                  freeimage.inc.php
新しくプログラムを作るときは、PHP4のextensionsからPHPエクステンション("php_winbinder.dll" とそれ以外にも必要なもの)と、WinBinderの include フォルダを丸ごとコピーする。

サンプル・プログラムの解説:includeに注意

PHPプログラム "isleap3.phpw" は前回の "isleap2.phpw" とほとんど同じだが、WInBinderライブラリ "include/winbinder.php" を相対パス指定で記載していない点が異なる。
bamcompile は、EXEファイルの中にソースコードやDLLファイルを組み込む関係上、相対指定ではうまく解釈されない。そこで、この表名表記にしている。
PHPエクステンションやWinBinderライブラリファイルも、フォルダisleap3以下にコピーしているのもそのためである。

0009: //WinBinder ライブラリをインクルード 
0010: include 'include/winbinder.php';

コンパイル

bamcompile でコンパイルするのに、プロジェクトファイル "isleap3.bcp" を利用する。
bamcompile.exe にPATHを通したら、コマンドラインから "bamcompile isleap3.bcp" を実行する。コンパイルが完了すると、"isleap3.exe" が生成されている。
"isleap3.exe" は、DLL不要で、単独で動作するEXEプログラムである。

プロジェクトファイルの解説

0001: MAINFILE isleap3.phpw
0002: OUTFILE  isleap3.exe
0003: DONTENCODE
0004: WINDOWED
0005: COMPRESS
0006: EMBED isleap3
0007: EXTENSION isleap3\php_winbinder.dll
0008: EXTENSION isleap3\php_mbstring.dll

MAINFILE
PHPメインプログラムを指定する。
OUTFILE
出力するEXEファイル名を指定する。
DONTENCODE
PHPファイルをエンコードしない。日本語プログラムでは必ず指定する。
COMPRESS
このオプションを指定すると、コンパイル時にUPXを用いた圧縮を行う。生成後のEXEファイルのサイズをおよそ半分以下に抑えることができる。
EMBED
EXEファイルの中に埋め込むファイルの実体を指定する。
EXTENSION
EXE内部で使用するPHPエクステンションを指定する。
プロジェクトファイル"isleap3.bcp"を使って作られた "isleap3.exe" プログラムの内部は一は下記のようになる。
isleap3.exe
│  isleap3.phpw
│  php_mbstring.dll
│  php_winbinder.dll
└─include
        wb_generic.inc.php
        wb_resources.inc.php
        wb_windows.inc.php
        winbinder.php

参考サイト

(この項おわり)
header