Tcl Based Installers

This page is intended as a forum for developing ideas about a tcl installer library. The general goal is to have a library of tcl and tk code that can be used in constructing software installers. Using this library, you would be able to write applications like:

  • a tcl/tk extension installer
  • an application installer, eg for tcl/tk itself or any other application, tcl based or not
  • a web-based update agent

Discussion on this is happening on the tclish mailing list [L1 ].

A related topic is into what directory should one install the various pieces of a tcl application or extension.

Obviously, a tcl/tk extension installer will be a crucial component in a Tcl Extension Repository from which extensions can be downloaded and installed on demand. Since this is a very simple application I (Steve Cassidy) thought I'd begin the library by prototyping this. You can find the code via my tcl page [L2 ]. Here are the procedures I defined:

   installer::fetch uri -- fetch a file from a remote url
   installer::tmpdir -- locate a temporary directory
   installer::text_progress token total current -- display progress of something
   installer::unzip zipfile dir -- unzip a zipfile to a target directory
   installer::install_extension uri ?dir?  -- install a tcl extension from a uri
   installer::disk_free dir  -- how much free space is left in dir?
   installer::locate_package_dir  -- find a place on auto_path to install a package
   installer::bootstrap ?site?  -- download enough code to be able to run install_extension

My code makes use of the http extension from the core and mkZiplib by Michael Kraus [L3 ] that provides a nice thin wrapper around zlib. I've provided alternate implementations of unzip that use zvfs (from freewrap) or an external unzip program if one can be found. If none is present then the bootstrap proc could be used to download and install one for the platform.

Another aspect of this is the shape of installable extension packages and of an online repository. For some initial work on this see Cantcl.

Other components of the installer library would include procedures to move files into different locations and to display a gui installer dialogue that is familiar to windows users. Please add your suggestions here...


Among the installers developers use for Tcl applications are

  • INNO [L4 ]
  • VISE [L5 ] (available for MacOS and Windows)
  • Microsoft Installer (MSI) - not really an installer, but a system for installing software from a .msi file created by an installer such as InstallShield
  • Jeff Hobbs's ActiveTcl installers (executable .zip)
  • InstallShield [L6 ]
  • Nullsoft NSIS installer [L7 ] (PT uses this)
  • setup2go (recommended by Kroc) - the home page at [L8 ] has gone, but the software is still available from download sites such as Tucows [L9 ]
  • WISE, taken over by Altiris, which was then taken over by Symantec. May still be available from Symantec. [L10 ]
  • cabwiz ("which comes with the freely downloadable eMbedded Visual C++ package")
  • Installer/GD [L11 ]
  • ... [many others] ...

The ActiveTcl installers mentioned above have been switched to a starpack for Tcl Dev Kit 2.5 and ActiveTcl 8.4.2.0.

A Tcl-based installer is Tclish, http://tclish.sourceforge.net/

Starkit (ex Scripted Document) follows the Tao of zero installation - if you have the file, it is installed ;-)


If you want to roll your own install scripts, you might want to reboot a (Windows) machine in the process. Here's utilities for that:

[Explain the purpose of rebooting Windows--locks on in-use DLLs, and so on.]


[Explain TEKI.]


For a simple stand alone application installer see: http://www.superant.com/cgi-bin/countessmod.pl?Tkinstall_Program


InstallJammer

http://www.installjammer.com/

"InstallJammer is the renamed, re-designed InstallBase project and has been in work for over two years for this release." (the alpha release 1.0a1, dated 2005-11-14)


InstallBase

InstallBase is a multi-platform GUI installer written in Tcl/Tk and designed to work on Windows, Mac and virtually any flavor of UNIX / Linux.

Current release is 1.0a5, released on March 21, 2003.

It features:

  • A full-featured install builder.
  • Installs are packaged in single binary executables for each platform making web distribution easy.
  • Features specific to Tcl/Tk software and programs.
  • Support for multiple install themes.
  • Default install themes that resemble popular, commercial installers.
  • A high level of configurability. Install panes can actually be modified right down to the Tcl/Tk code.
  • Built-in support for Windows install conventions.
  • Automatic creation of an uninstaller.
  • Currently supported platforms are Windows, FreeBSD, Linux and Solaris.

About the Company: Software AG one:

The installation tool is called Graphical Installation for Unix (short: Ginfix) and is an extended Tcl/Tk interpreter. It is a statically build single executable, not unlike a Starpack but doesn't use that technique.

The installer supports installing, configuring, updating, and removing a Software AG product on Unix Systems. It has a wizard like front end and supports two interactive modes (gui and console) and a batch mode without interaction. A steps file is needed as input, which is a specially formated Tcl-Script and describes the necessary steps for the installer to e.g. install a Software AG product.