たとえば、Windows版ならtclkit-win32.upx.exe を入手します。これがそのまま実行形式です。
Linux版ならtclkit-linux-x86.gzを入手し、gunzipで解凍したtclkit-linux-x86が実行形式です。
$ tclkit-win32.upx.exe hello.tcl |
Tcl/Tkをインストールしていなくても、Tclスクリプトを実行できます。
たとえば、Windows版ならtclkitsh-win32.upx.exeとsdx.kitとsdx.batを入手し、
tclkitsh-win32.upx.exeをtclkitsh.exeにコピーします。
UNIX版ならTclkitは入手済みなのでsdx.kitだけを入手します。
$ sdx.bat qwrap hello.tcl |
これでカレントフォルダにhello.kitが作成されます。
Windowsのコマンド・プロンプトでhello.kitを起動するには以下のようにします。
$ tclkit-win32.upx.exe hello.kit |
ラッピングされたhello.kitファイルの内容を確認してみましょう。
$ sdx.bat lsk hello.kit hello.kit: dir lib/ 70 2004/02/01 23:07:43 main.tcl hello.kit/lib: dir app-hello/ hello.kit/lib/app-hello: 199 2004/02/01 23:07:43 hello.tcl 73 2004/02/01 23:07:43 pkgIndex.tcl |
hello.kit内はVFS(仮想ファイルシステム)になっているのがわかります。
hello.tcl以外のファイルが一緒にラッピングされています。
逆ラッピングするには以下のようにします。
$ sdx.bat unwrap hello.kit |
これでカレントフォルダにhello.vfsフォルダが作成されます。
もし、複数ファイルをラッピングしたい場合は、hello.vfs/lib/app-hello/フォルダに
残りのファイルを入れます。
日本語を使う場合、日本語のencodingも一緒にラッピングする必要があります。
hello.vfs/lib/にtcl8.4/encodingフォルダを掘って、そこにTclのencodingファイル
を入れます。Windowsならcp932.encとshiftjis.encを入れておけば良いでしょう。
一緒にパッケージングしたい拡張パッケージがあればhello.vfs/libに入れます。
すべてのファイルをコピーした後、再度ラッピングを行います。
$ sdx.bat wrap hello.exe -runtime tclkit-win32.upx.exe |
これでカレントフォルダにhello.exeが作成されます。
これで単一の実行形式が作成できました。あとはhello.exeだけを配布するだけです。
(注意)
UNIX環境ではスクリプトに package require Tk のおまじないがないとTkが使えないようです。
すごく便利になったので、とりあえず、自作ソフトを片っ端からStarpack化しました。(^^;