Chapter 6

Creating Distribution Archives

The command-line flags --plt and --collection-plt direct mzc to create an archive for distributing files to PLT users. A distribution archive usually has the suffix .plt, which Help Desk and DrScheme recognize as archives to provide automatic unpacking facilities. The Setup PLT program also supports .plt unpacking.

An archive contains the following elements:

Use the --plt flag to specify individual directories and files for the archive. Each file and directory must be specified with a relative path. By default, if the archive is unpacked with Help Desk or DrScheme, the user will be prompted for a target directory, and if Setup PLT is used to unpack the archive, the files and directories will be unpacked relative to the current directory. If the --at-plt flag is provided to mzc, the files and directories will be unpacked relative to the PLT add-ons directory, instead. Finally, if the --all-users flag is provided to mzc, the files and directories will be unpacked relative to the PLT installation directory, instead.

Use the --collection-plt flag to pack one or more collections; sub-collections can be designated by using a forward slash (``/'') as a path separator on all platforms. In this mode, mzc automatically uses paths relative to the PLT installation or add-ons directory for the archived files, and the collections will be set-up after unpacking. In addition, mzc consults each collection's info.ss file, as described below, to determine the set of required and conflicting collections. Finally, mzc consults the first collection's info.ss file to obtain a default name for the archive. For example, the following command creates a sirmail.plt archive for distributing a sirmail collection:

mzc --collection-plt sirmail.plt sirmail

When packing collections, mzc checks the following fields of each collection's info.ss file (see section 7):

For example, the info.ss file in the sirmail collection might contain the following info declaration:

(module info (lib "infotab.ss" "setup")
  (define name "SirMail")
  (define mred-launcher-libraries (list "sirmail.ss"))
  (define mred-launcher-names (list "SirMail"))
  (define requires (list (list "mred"))))

Then, the sirmail.plt file (created by the command-line example above) will contain the name ``SirMail''. When the archive is unpacked, the unpacker will check that the MrEd collection is installed (not just MzScheme), and that MrEd has the same version as when sirmail.plt was created.

Although mzc's command-line interface is sufficient for most purposes, the pack.ss library of the setup collection provides a general interface for constructing archives.