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