** Summary ** A '''starpack''' is a single executable file which contains both [basekit] and a [Starkit]. ** See Also ** [Differences between a starkit and a starpack]: [qstarpack]: 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]: ** Tools ** [http://anoved.net/2008/03/starpacker.html%|%starpacker]: an [sdx]-based utility for making starpacks. [Packer]: ** Description ** Starpacks 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 Starpacks use the same packaging mechanism as Starkits. their content can be listed and extracted with the [SDX] utility. The main difference is that the "header" is a large executable file, and that the files stored inside include all the standard Tcl/Tk runtime support files. ** Creating Starpacks ** [How to create my first Starpack]: [http://equi4.com/papers/skpaper4_7.html%|%Constructing a Starpack%|%], by [Steve Landes]: ** Developing for Starpacks ** [sbron] 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 ** The original term for a starpack was '''custom tclkit''' ** Tclkit on Mac ** [LV]: 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 tclkit In its console, type: ====== set argv [list wrap myapp -prefix mytclkit] source sdx.kit ====== The sdx starkit will perform its work (and exit, I think) Some time later, [CL] notes the availability of [http://tk-components.sourceforge.net/tk-bundle-tutorial/index.html%|%How to Build Tcl/Tk Application Bundles: the Mac Way] ** Misc ** The 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-gui ====== You 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 /]# === <> Application | Deployment | Tclkit