Tclkitを使ってみる&日本語対応

Tclkitとは、 wishと必要なライブラリを1つの実行形式(exe)にまとめたプログラムです。 Tcl/TkをインストールしていないPCであっても、 これとTclスクリプトさえあれば、 Tcl/Tkに基本的に備わった機能なら何でも実行することができます。
ダウンロードは、上記ホームページからリンクされている、 こちらか、 こちらから。 私は前者から「tclkit-8.5.8-win32.upx.exe」をダウンロードしました。 これは圧縮アーカイブなどではなくて、実行形式そのものです。

使い方は簡単で、 「tclkit-8.5.8-win32.upx.exe hello.tcl」 のようにすれば、 wish85.exeと同じように実行できます。

ただし、そのままのTclkitでは日本語の処理がうまくいかず、 文字化けしてしまうことがあります。 これは内蔵しているencodingファイルに、いくつか足りないものがあるためで、 それを補うために次の方法でexeを作り直す必要があります。

  1. 以下の作業を行うには、Tcl/Tkの「本物」の処理系が必要です。
  2. まず、SDX(sdx.kit)というスクリプトを入手します。 これは、 Getting Started からリンクされている sdx.kit をそのままダウンロードして保存します。 ここでは、 tclkit-8.5.8-win32.upx.exe と sdx.kit を同じディレクトリに配置したものとします。 (分かりやすいので)
  3. コマンドプロンプトで 「tclsh85 sdx.kit unwrap tclkit-8.5.8-win32.upx.exe」 を実行します。
    「tclkit-8.5.8-win32.upx.vfs」というディレクトリができます。
  4. そのディレクトリ内のlib/tcl8.5/encoding に、 「本物」の同じディレクトリから、欠けている.encファイルをコピーして補います。 このバージョンでは、cp932とiso2022-jpは最初からありましたが、 euc-jpとshiftjisが欠けていたので、コピーしました。
  5. 次にこのコマンドを実行します: 「tclsh85 sdx.kit mksplit tclkit-8.5.8-win32.upx.exe」
    tclkit-8.5.8-win32.upx.tail と、 tclkit-8.5.8-win32.upx.head という2つのファイルができます。
  6. tclkit-8.5.8-win32.upx.exe をダミーに改名退避しておきます。
  7. 最後に、
    tclsh85 sdx.kit wrap tclkit-8.5.8-win32.upx.exe -runtime tclkit-8.5.8-win32.upx.head
    で元と同じ名前のexeに修正版ができました。
    なお私はファイル名が長いので、こうして作った新しいexeをtclkit.exe、 配布されている元のexeはそのままの名前で残すことにしました。

やねうらの top
(first uploaded 2010/05/30 last updated 2010/05/30, MISUMI URANO)