Starpackを使いこなす

Starpackの制限事項

今のところ、Starpackには、いくつかの制限事項があります。
その中でも、以下の制限事項は気になるところです。

Starpackの留意点

Starpackは、VFSを使うので、スクリプトとStarpackで動作が異なる事があります。
期待する結果とならない場合、スクリプトを修正する必要が出てきます。
参考までに、Starpack版のD:/hello.exeの実行結果を載せておきます。

評価コード説明Starpackの実行結果
$argv0スクリプトのパス名D:/hello.exe/main.tcl
info scriptスクリプトのパス名D:/hello.exe/lib/app-hello/hello.tcl
info nameofexecutableルートパス名D:/hello.exe
$starkit::topdirルートパス名D:/hello.exe
file system $argv0ファイルシステム名tclvfs {::vfs::mk4::handler exe}
file system [info script]ファイルシステム名tclvfs {::vfs::mk4::handler exe}
file system [info nameofexecutable]ファイルシステム名tclvfs {::vfs::mk4::handler exe}
file system $starkit::topdirファイルシステム名tclvfs {::vfs::mk4::handler exe}

この結果から、一緒にラップしたスクリプトをsourceする場合は、file dirname [info script]のパスを、
execやパイプをする場合は、file dirname [info nameofexecutable]のパスを使うことになります。

アイコンのカスタマイズ

StarpackのアイコンはデフォルトでTkの赤いアイコンになっていますが、
.icoファイルを一緒にラップすることで置換することが出来ます。
以下の解像度のアイコンをすべて用意する必要があります。

        16x16, 4-bit (16-color)
        16x16, 8-bit (256-color)
        32x32, 4-bit (16-color)
        32x32, 8-bit (256-color)
        48x48, 4-bit (16-color)
        48x48, 8-bit (256-color)

例えば、hello.exeのアイコンを変更したい場合は、
hello.vfs/tclkit.icoにアイコンを置いて再ラップするだけです。
.icoファイルの名前は、必ずtclkit.icoにしてください。

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

Starkit + BLT = dqkit

BLTはstub化されていない拡張パッケージなので、Starpackにラップすることはできません。
そこで、BLTも一緒になったStarkitであるDataQuest社のdqkitを使うことになります。
dqkit0.2に、encodingを追加できるように拡張したTcl/Tk8.4.5版を作成しました。
自作ソフトコーナーからWindows版がダウンロードできます。お試しください。
使い方は、Starkitとほぼ同じです。ただし、今のところアイコンの置換はできません。

sdx.bat wrap hello.exe -runtime dqkit-Win32-i386-all.exe

Starkitとdqkitの比較

標準添付のTcl拡張パッケージを比較してみました。
dqkitの方は、Tclコアがスレッド化されているのがわかります。

Starkit 8.4.9
http pwb rechan zipvfs tcltest opt mk4vfs vfs::zip vfslib
scripdoc msgcat zlib registry starkit Tcl Itcl dde Mk4tcl
vfs vfs::mk4 Tk
dqkit 0.2
http Thread tbcload pwb rechan zipvfs BLT tcltest opt tls
mk4vfs vfs::zip vfslib scripdoc msgcat Iwidgets Itk zlib
registry starkit sqlite Tclx Tcl Itcl dde Mk4tcl vfs vfs::mk4 Tk

関連情報