Summary editA starpack is a single executable file which contains both basekit and a Starkit.
See Also edit
- a small script that eases migrating from freewrap to starpacks.
- Starting effective starkit-based pure-Tcl development: the starkit::* namespace
- how an application should be laid out to be packed as a starpack.
- StarPack helper ,by JR
- Custom Icons For Win32 Starpacks - The Real Story
- Building Starkits and Starpacks using a Makefile
- an sdx-based utility for making starpacks.
- builds cross-platform Starpacks with Tcllib included.
Description editStarpacks are standalone executables, which makes them even easier to distribute and use than Starkits. This convenience does introduce a number of trade-offs:
- A Starpacks are platform-specific. One starpack must be produced for each deployment target
- Starpacks cannot modify themselves
- Starpacks must be updated as a whole, and are (much) larger than most Starkits
Creating Starpacks edit
Developing for Starpacks editsbron 2005-08-17: Code can tell if it's running out of a starpack by checking the variable ::starkit::mode. In a starpack it's set to "starpack", and in a starkit it's set to (surprise!) "starkit".
LV 2006-11-14: Anyone willing to write a tutorial on creating a starpack that is designed to phone home (i.e. contact a web site) to check for updates? There are at least two scenarios I can see where this would be useful. The first, of course, is checking to see if there are new versions... sort of the functionality that sdx provides. The second would be simple updates of data files.I suspect there are tricky parts - the application probably can't update the file that is being executed, so some messing around with renaming is probably necessary. The tclvfs is in the tclkit, right?, so that should make getting to the data a bit easier, if so. Anyways, a link to a tutorial on this subject would really be helpful.
History editThe original term for a starpack was custom tclkit
Tclkit on Mac editLV: from the starkit mailing list, jcw says: You're going to have to create starpacks on the Mac. [For OS 9]Reason: MacOS files have a "data fork" and a "resource fork". The .bin files are an exchange format which ties them together (along with a bit of "finder info"). Catenating anything a the end probably will simply be ignored on unpack - which is what happens once you take it to the mac and unpack through StuffIt Expander or some such (Mac browsers tend to do that automatically, right after download).If you do it on the Mac, while the forks are distinct, sdx will concatenate after the data fork. Then you can run it through StuffIt to create the transferable .bin version.Running SDX on the Mac takes some trickery, since SDX is command-line driven, and the Mac has only tclkit:Launch tclkitIn its console, type:
set argv [list wrap myapp -prefix mytclkit] source sdx.kitThe sdx starkit will perform its work (and exit, I think)Some time later, CL notes the availability of How to Build Tcl/Tk Application Bundles: the Mac Way
Misc editThe author thinks it has some VFS version problems with Windows Tclkits, but he hasn't had an opportunity to work them out. (Any advice or information on that would be useful.) He uses it on Mac OS X.
LV Thanks. I am still stuck, however, trying to figure out what I am trying to do. eskil is a stand alone Tcl/Tk late 8.5 or 8.6 based application that allows the user to compare two files and show, using color highlighting, the differences. I would like to create a starpack of the application. Since I've not found a working version of tclkit for Solaris 8 that is new enough to use for this purpose, I was hoping to be able to replace the tclkit in the sdx wrap command with kbskit to get the same effect. Is this something that is doable, or do I indeed face having to build a specialized kbskit that includes eskil in the resulting binary?Thanks!RZ: download eskil24.kit and then type
tclkit sdx.kit unwrap eskil24.kit tclkit sdx.kit wrap eskil24 -runtime kbsvq8.5-guiYou get a starpack called 'eskil24'.
MHo 2012-05-07: I got the following on RHEL linux with tclkit 8.5.9:
[root@tqs-test /]# ./tclkitlinux % info pa 8.5.9 % info commands tell socket subst open eof pwd glob list pid exec auto_load_index time unknown eval lassign lrange fblocked lsearch auto_import gets case lappend proc break variable llength auto_execok return linsert error catch clock info split array if fconfigure concat join lreplace source fcopy global switch auto_qualify update close cd for auto_load file append lreverse format unload read package set binary namespace scan apply trace seek zlib while vlerq chan flush after vwait dict continue uplevel foreach lset rename rechan fileevent regexp lrepeat upvar encoding expr unset load regsub history interp exit puts incr lindex lsort tclLog string % exit libgcc_s.so.1 must be installed for pthread_cancel to work Aborted (core dumped) [root@tqs-test /]#With 8.5.10, it's slightly different:#
[root@tqs-test /]# ./tclkitshlinux2 ./tclkitshlinux2: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory [root@tqs-test /]#