音楽とかソフトとか

今回もtcl/tk関係についてメモ書きします。

私の現在の環境は以下のとおりです。
・OS ・・・ Windows7
Tcl/tk ・・・ version 8.6.4をソースからビルドしたもの
tclkit ・・・ githubで6 Oct 2014にコミットされたソースをtcl/tk8.6向けにビルドしたもの
sdx・・・24-Feb-2008 21:03、103Kbyte版

tcl/tkをtclkitでexe化するとき、以下のように「tclkit.ico」というファイル名でアイコンファイルを入れることでexeファイルのアイコンを自作アイコンに変えられます。
----

(典型的な手順例:foo.tclからfoo.exeを作る。アイコンにはfoo.icoを使う)
./sdx.bat qwrap foo.tcl
./sdx.bat unwrap foo.kit
cp foo.ico foo.vfs/tclkit.ico
./sdx.bat wrap foo.exe -runtime tclkit-gui.exe

----


tclkit.icoの内容は、tclkitバージョン8.5.8で変更されたようです(参考:こちらのwiki)。8.5.8用のtclkit.icoのサンプルはこちらから入手できます。このサンプルには以下のicoが合成されています。以前の仕様に比べて種類が増えたようです。
----

サイズ=64x64、256カラーパレット、32(bit/pixel)
サイズ=48x48、256カラーパレット、32(bit/pixel)
サイズ=32x32、256カラーパレット、32(bit/pixel)
サイズ=24x24、256カラーパレット、32(bit/pixel)
サイズ=16x16、256カラーパレット、32(bit/pixel)
サイズ=48x48、256カラーパレット、24(bit/pixel)
サイズ=32x32、256カラーパレット、24(bit/pixel)
サイズ=24x24、256カラーパレット、24(bit/pixel)
サイズ=16x16、256カラーパレット、24(bit/pixel)
サイズ=48x48、256カラーパレット、8(bit/pixel)
サイズ=32x32、256カラーパレット、8(bit/pixel)
サイズ=24x24、256カラーパレット、8(bit/pixel)
サイズ=16x16、256カラーパレット、8(bit/pixel)

----

ところがこの仕様に沿ったicoファイルを用意して上述の「./sdx.bat wrap foo.exe -runtime tclkit-gui.exe」を行ってもアイコンがreplaceされませんでした(一部のアイコン情報はreplaceされ、残りは「NOT SAME SIZE」と言われて置き換えられませんでした)。先のサンプルでwrapしても同じ結果です。

そこで、以下の手順でsdx.kitを改造することで解決しました。
----

./sdx.bat unwrap sdx.kit
mv sdx.vfs mysdx.vfs
vi mysdx.vfs/lib/app-sdx/wrap.tcl

  proc decICO内の一行を以下のように変更。
(変更前) lappend result ${w}x${h}/$cc $image
(変更後) lappend result ${w}x${h}/$cc/$bc $image

./sdx.bat wrap mysdx.kit

mv sdx.kit sdx.kit-org   # バックアップ
mv mysdx.kit sdx.kit   # sdx.kitに置き換える

----

なおこちらのwikiに他の対応方法が紹介されていました。

スポンサーサイト

PageTop