Deployment file formats

As one prepares to install code into its final execution location, one has to determine in what file format the application should be shipped.

Hopefully people will add to the following discussion, spin off new pages, etc.

Some of the most popular alternatives in the Tcl arena are:

Formats that need to be extracted by the user :

  • tar file format
  • zip archive file format (as implemented by winzip, unix's zip/unzip, etc.)

Formats that are managed by a package manager :

Formats that need only to be placed by the user in the appropriate directory :

  • starkit file format
  • starpack file format
  • EKB: Don't forget freewrap
  • single file (if you are so lucky...)
  • one of the ''compressed but still executable' formats for a single file, such as provided by windows zip command, upx, etc.

RS 2006-05-29 The single plain-text file approach can take one quite far. Consider that images (which one often loads from separate files) can be inlined in the source as well.

escargo 1 Jul 2003 - Any idea of which zip format(s) are of interest here? For example, if you are on a system with GNU tar, you can untar and unzip at the same time (tar xvzf ....). On systems without GNU tar, you might need a separate unzip program and tar (or untar). anonymous - The process used by gnu tar is more typically called gzip (in honor of the program used...). gzip isn't really a deployment file format as it is a compression.

AM The well-known zip-format is directly supported by Tcl, which makes it feasible to use it on a number of well-known platforms.

LV Clif Flynt asked, over on the starkit mailing list, a question that now is whirling around in my head.

What would need to be developed so that one could, for compiled programs, create a single a.out executable? The above formats are all external so to speak.

In other words, one creates one's programs, sets up one's files, creates a file structure, then wraps the results into a file that, in essence, gets unwrapped (in memory) at run time.

But what about a different approach - changes to the Tcl (and Tk) code so that external files are not required? Of course, to use extensions, one would need to do additional work so they too no longer required external files. It seems like, to me, this would be a third Tcl/Tk implementation (the first being the current C version, the second being the Java implementation known as TclJava (and perhaps others?) ).

It would seem to me that it would be useful for embedded system developers as well as application developers.

Has anyone researched the effort this would take?

Also wondering about the terms stardll/starlib.