Tclkit

Tclkitは、Tcl/Tkアプリケーションのためのスタンドアロン・ランタイムで、
単一の実行形式だけでTcl/Tkのアプリケーションを実行できます。
Tcl/Tkのインストールが不要なので、Tclアプリケーションの配布が楽に行えます。
Tclkitには、標準でIncrTclとMetakitのTcl拡張などが含まれています。
2005年1月現在、TclkitはTcl/Tk 8.4.9とTcl/Tk 8.5a2に対応しています。

Tclkitの入手

Windows版とLinux版の実行形式は、 Starkit Distribution Archiveから
その他のプラットフォーム版の実行形式は、download areaからダウンロードできます。

たとえば、Windows版ならtclkit-win32.upx.exe を入手します。これがそのまま実行形式です。
Linux版ならtclkit-linux-x86.gzを入手し、gunzipで解凍したtclkit-linux-x86が実行形式です。

Tclkitの使い方

Tclkitの使い方は簡単です。
例えば、Windowsのコマンド・プロンプトでhello.tclを起動するには以下のようにします。

$ tclkit-win32.upx.exe hello.tcl

Tcl/Tkをインストールしていなくても、Tclスクリプトを実行できます。

Starkit

Starkitは、Tclスクリプトを単一のファイルにラッピングし、パッケージングしたものです。
ラッピングされたファイルはマルチプラットフォームで利用できます。

Starkitの入手

Windows版とUNIX版のSDXは、Starkit Developer eXtensionからダウンロードできます。

たとえば、Windows版ならtclkitsh-win32.upx.exeとsdx.kitとsdx.batを入手し、
tclkitsh-win32.upx.exeをtclkitsh.exeにコピーします。
UNIX版ならTclkitは入手済みなのでsdx.kitだけを入手します。

Starkitの作り方

例えば、Windowsのコマンド・プロンプトでhello.tclをラッピングするには以下のようにします。

$ sdx.bat qwrap hello.tcl

これでカレントフォルダにhello.kitが作成されます。

Windowsのコマンド・プロンプトでhello.kitを起動するには以下のようにします。

$ tclkit-win32.upx.exe hello.kit
※ .kitファイルはActiveTcl8.4でも実行できます。

ラッピングされた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に入れます。
すべてのファイルをコピーした後、再度ラッピングを行います。

Starpack

StarpackはStarkitの特別バージョンで、Tclのファイルを単一の実行形式にラッピングし、
パッケージングしたものです。StarkitとTclkitを合体させたものと考えられます。

Starpackの作り方

例えば、Windowsのコマンド・プロンプトでhello.vfsをラッピングするには以下のようにします。

$ sdx.bat wrap hello.exe -runtime tclkit-win32.upx.exe

これでカレントフォルダにhello.exeが作成されます。

これで単一の実行形式が作成できました。あとはhello.exeだけを配布するだけです。

(注意)
UNIX環境ではスクリプトに package require Tk のおまじないがないとTkが使えないようです。

まとめ

Tclkit, Starkit, Starpackは次世代のパッケージング技術と言っても過言ではないでしょう。
最新のTclkit, Starkit, Starpackは、encodingの追加をサポートし、
さらに、日本語を使うのにバイトコードへのコンパイルが不要になりました。

すごく便利になったので、とりあえず、自作ソフトを片っ端からStarpack化しました。(^^;

関連情報