Purpose: define the steps for one to take to create their first starpack.
You can even use your own application for the initial time through; "starkitting" is straightforward enough that people have been successful doing it for the first time even with applications which involve several auxiliary files, extensions (but only stubsified ones?), and so on.
I'll break this down a slightly different way:
On Unix, these may be installed as ''tclkit'' and ''sdx'', while on Windows, these are more likely installed as ''tclkit.exe'' and ''sdx.kit''. On Unix, remember to change the permission modes of tclkit to be executable.
package require Tk pack [button .b -text "That's all for now" -command exit]
or tclkit sdx qwrap example.tcl Windows: tclkitsh-win32.upx.exe sdx.kit qwrap example.tcl Now you have an example.kit Starkit (and, if you did this on a Windows host, an example.bat). That's the Starkit.
Windows: tclkitsh-win32.upx.exe sdx.kit unwrap example.kit
You might want to call it something different, like ''tclkitcopy'' to keep things straight. Keep in mind that Starpacks look "native"; they are platform- specific. If you're working on Windows, and you're making a Starpack for Windows, just copy tclkit.exe into your local, working directory, at least for this demonstration.
Windows: tclkitsh-win32.upx.exe sdx.kit wrap example.exe -runtime tclkit-win32.upx.exe
Of course, on Unix-like systems, you will eventually learn that if you have your environment set properly, and sdx.kit permission modes set to execute, then you will be able to skip that initial word of the command and abbreviate things to:
or even
Altogether, you can use the following script "tcl2exe":
# # Creation of executables ("starpacks") that can run standalone starting from a TCL-script: # # Call: tcl2exe <tclscript> <platform> # # where the name of the TCL-script is given without extension, # and where <platform> is either linux or MinGW # # result: an executable named <tclscript>.exe # TCLScript=$1 Platform=$2 # # Set the tools: # case $Platform in #
linux )
# mytclkit=./tclkit-linux-x86 myruntime=$mytclkit
;;
#
MinGW )
# mytclkit=./tclkitsh-win32.upx.exe myruntime=./tclkit-win32.upx.exe
;;
esac # # Construct executable: # $mytclkit sdx.kit qwrap $TCLScript.tcl $mytclkit sdx.kit unwrap $TCLScript.kit cp $myruntime tclkitcopy.exe $mytclkit sdx.kit wrap $TCLScript.exe -runtime tclkitcopy.exe # # Clean up the dirt: # rm tclkitcopy.exe rm $TCLScript.kit rm -rf $TCLScript.vfs #
Just a note of clarification - if I am on, say, Windows, I can take a cross platform example.kit (assuming that in fact I created it as cross-platform), specify a tclkit for Solaris, or HP/UX, Linux, MacOS X, etc. and have as a result a starpack stand alone executable for that platform.
If, however, my starkit has platform specific components - compiled extensions, special platform-specific commands, etc. - then the starkit application is going to need to be updated to work on all the platforms for which I want to create starpacks.
How should your application look so that it makes a good starpack? "Starting effective starkit-based pure-Tcl development: the starkit::* namespace" addresses that question.
see also StarPack helper made by JR