Version 11 of deployment

Updated 2002-08-28 16:32:29

[... explain meaning ...]

Deployment is the work it takes to move from finished application to application working on the end-user's desktop/server/other computer.

Issues to be considered include:

  • on what platforms does the application need to run
  • will the application and all of its dependencies run on these platforms
  • where in the end-user's environment does the application and its components reside
  • how many of the application's dependant components do you need to deploy (your own tcl/tk interpreter? extensions, stand alone additional applications, images, fonts, drivers, libraries, etc.)
  • when a bug is encountered, how do you ensure that all end-users are updated appropriately
  • how can you determine how many end-users are using the application?
  • do the end-users need to share data, and if so, how do they do this?
  • are there any resource/locking issues

[Discussions in pages on "VFS", "CriTcl builds C extensions on-the-fly", "MicroTcl for Tcl9", "Jean-Claude Wippler", "James Garrison", "Script to merge C source files", "How can I compile Tcl type scripts into binary code", "COMPANY: Career Demon.com plc", ...]


Bob Techentin wisely observes, "You might consider a 'traditional' tcl/tk installation, complete [with] additional packages, as a component of your application. Take a close look at how TclPro tools get installed, and you'll see that the 'wish' executable is actually a short shell script which sets some environment variables (e.g., LD_LIBRARY_PATH) and then execs the binary shell."


Another option is to use TclKit's "scripted documents"/starkit [L1 ]. In a few steps:

  • get TclKit for your platform
  • get the "SDX" scripted doc utility (platform independent) from [L2 ]
  • create dirs "myapp.vfs/", "myapp.vfs/bin/", and "myapp.vfs/lib/"
  • copy your main script to "myapp.vfs/bin/main.tcl"
  • copy all packages you need as dirs inside "myapp.vfs/lib/"
  • wrap it all up using "sdx fs2sd myapp" ("file system to scripted doc")
  • that's it, you have a runnable "myapp"
  • try it (double-click, or run "./myapp" on Unix)

There are ways to make "main.tcl" work in unpackaged as well as in packaged form, which is useful for debugging. All of this is based on Tcl's Virtual File System or VFS in short. All examples here [L3 ] and here [L4 ] use this same approach, you can unpack them (with "sdx sd2fs ...") to see how they work. - JCW