man/cat1/unzipsfx.1.txt

UNZIPSFX(1L) UNZIPSFX(1L)
 
 
 
 
 
NAME
       unzipsfx - self-extracting stub for prepending to ZIP
       archives
 
SYNOPSIS
       <name of unzipsfx+archive combo> [-cfptuz[ajnoqsCLV$]]
       [file(s) ... [-x xfile(s) ...]]
 
DESCRIPTION
       unzipsfx is a modified version of unzip(1L) designed to
       be prepended to existing ZIP archives in order to form
       self-extracting archives. Instead of taking its first
       non-flag argument to be the zipfile(s) to be extracted,
       unzipsfx seeks itself under the name by which it was
       invoked and tests or extracts the contents of the
       appended archive. Because the executable stub adds bulk
       to the archive (the whole purpose of which is to be as
       small as possible), a number of the less-vital capabili-
       ties in regular unzip have been removed. Among these
       are the usage (or help) screen, the listing and diagnos-
       tic functions (-l and -v), the ability to decompress
       older compression formats (the ``reduce,'' ``shrink''
       and ``implode'' methods). The ability to extract to a
       directory other than the current one can be selected as
       a compile-time option, which is now enabled by default
       since UnZipSFX version 5.5. Similary, decryption is
       supported as a compile-time option but should be avoided
       unless the attached archive contains encrypted files.
       Starting with release 5.5, another compile-time option
       adds a simple ``run command after extraction'' feature.
       This feature is currently incompatible with the
       ``extract to different directory'' feature and remains
       disabled by default.
 
       Note that self-extracting archives made with unzipsfx
       are no more (or less) portable across different operat-
       ing systems than is the unzip executable itself. In
       general a self-extracting archive made on a particular
       Unix system, for example, will only self-extract under
       the same flavor of Unix. Regular unzip may still be
       used to extract the embedded archive as with any normal
       zipfile, although it will generate a harmless warning
       about extra bytes at the beginning of the zipfile.
       Despite this, however, the self-extracting archive is
       technically not a valid ZIP archive, and PKUNZIP may be
       unable to test or extract it. This limitation is due to
       the simplistic manner in which the archive is created;
       the internal directory structure is not updated to
       reflect the extra bytes prepended to the original zip-
       file.
 
ARGUMENTS
       [file(s)]
              An optional list of archive members to be pro-
              cessed. Regular expressions (wildcards) similar
              to those in Unix egrep(1) may be used to match
              multiple members. These wildcards may contain:
 
              * matches a sequence of 0 or more characters
 
              ? matches exactly 1 character
 
              [...] matches any single character found inside
                     the brackets; ranges are specified by a
                     beginning character, a hyphen, and an end-
                     ing character. If an exclamation point or
                     a caret (`!' or `^') follows the left
                     bracket, then the range of characters
                     within the brackets is complemented (that
                     is, anything except the characters inside
                     the brackets is considered a match).
 
              (Be sure to quote any character that might other-
              wise be interpreted or modified by the operating
              system, particularly under Unix and VMS.)
 
       [-x xfile(s)]
              An optional list of archive members to be
              excluded from processing. Since wildcard charac-
              ters match directory separators (`/'), this
              option may be used to exclude any files that are
              in subdirectories. For example, ``foosfx *.[ch]
              -x */*'' would extract all C source files in the
              main directory, but none in any subdirectories.
              Without the -x option, all C source files in all
              directories within the zipfile would be
              extracted.
 
       If unzipsfx is compiled with SFX_EXDIR defined, the fol-
       lowing option is also enabled:
 
       [-d exdir]
              An optional directory to which to extract files.
              By default, all files and subdirectories are
              recreated in the current directory; the -d option
              allows extraction in an arbitrary directory
              (always assuming one has permission to write to
              the directory). The option and directory may be
              concatenated without any white space between
              them, but note that this may cause normal shell
              behavior to be suppressed. In particular,
              ``-d ~'' (tilde) is expanded by Unix C shells
              into the name of the user's home directory, but
              ``-d~'' is treated as a literal subdirectory
              ``~'' of the current directory.
 
OPTIONS
       unzipsfx supports the following unzip(1L) options: -c
       and -p (extract to standard output/screen), -f and -u
       (freshen and update existing files upon extraction), -t
       (test archive) and -z (print archive comment). All nor-
       mal listing options (-l, -v and -Z) have been removed,
       but the testing option (-t) may be used as a ``poor
       man's'' listing. Alternatively, those creating self-
       extracting archives may wish to include a short listing
       in the zipfile comment.
 
       See unzip(1L) for a more complete description of these
       options.
 
MODIFIERS
       unzipsfx currently supports all unzip(1L) modifiers: -a
       (convert text files), -n (never overwrite), -o (over-
       write without prompting), -q (operate quietly), -C
       (match names case-insensitively), -L (convert uppercase-
       OS names to lowercase), -j (junk paths) and -V (retain
       version numbers); plus the following operating-system
       specific options: -X (restore VMS owner/protection
       info), -s (convert spaces in filenames to underscores
       [DOS, OS/2, NT]) and -$ (restore volume label [DOS,
       OS/2, NT, Amiga]).
 
       (Support for regular ASCII text-conversion may be
       removed in future versions, since it is simple enough
       for the archive's creator to ensure that text files have
       the appropriate format for the local OS. EBCDIC conver-
       sion will of course continue to be supported since the
       zipfile format implies ASCII storage of text files.)
 
       See unzip(1L) for a more complete description of these
       modifiers.
 
ENVIRONMENT OPTIONS
       unzipsfx uses the same environment variables as
       unzip(1L) does, although this is likely to be an issue
       only for the person creating and testing the self-
       extracting archive. See unzip(1L) for details.
 
DECRYPTION
       Decryption is supported exactly as in unzip(1L); that
       is, interactively with a non-echoing prompt for the
       password(s). See unzip(1L) for details. Once again,
       note that if the archive has no encrypted files there is
       no reason to use a version of unzipsfx with decryption
       support; that only adds to the size of the archive.
 
AUTORUN COMMAND
       When unzipsfx was compiled with CHEAP_SFX_AUTORUN
       defined, a simple ``command autorun'' feature is sup-
       ported. You may enter a command into the Zip archive
       comment, using the following format:
 
           $AUTORUN$>[command line string]
 
       When unzipsfxP recognizes the ``$AUTORUN$>'' token at
       the beginning of the Zip archive comment, the remainder
       of the first line of the comment (until the first new-
       line character) is passed as a shell command to the
       operating system using the C rtl ``system'' function.
       Before executing the command, unzipsfxP displays the
       command on the console and prompts the user for confir-
       mation. When the user has switched off prompting by
       specifying the -q option, autorun commands are never
       executed.
 
       In case the archive comment contains additonal lines of
       text, the remainder of the archive comment following the
       first line is displayed normally, unless quiet operation
       was requested by supplying a -q option.
 
EXAMPLES
       To create a self-extracting archive letters from a regu-
       lar zipfile letters.zip and change the new archive's
       permissions to be world-executable under Unix:
 
           cat unzipsfx letters.zip > letters
           chmod 755 letters
           zip -A letters
 
       To create the same archive under MS-DOS, OS/2 or NT
       (note the use of the /b [binary] option to the copy com-
       mand):
 
           copy /b unzipsfx.exe+letters.zip letters.exe
           zip -A letters.exe
 
       Under VMS:
 
           copy unzipsfx.exe,letters.zip letters.exe
           letters == "$currentdisk:[currentdir]letters.exe"
           zip -A letters.exe
 
       (The VMS append command may also be used. The second
       command installs the new program as a ``foreign
       command'' capable of taking arguments. The third line
       assumes that Zip is already installed as a foreign com-
       mand.) Under AmigaDOS:
 
           MakeSFX letters letters.zip UnZipSFX
 
       (MakeSFX is included with the UnZip source distribution
       and with Amiga binary distributions. ``zip -A'' doesn't
       work on Amiga self-extracting archives.) To test (or
       list) the newly created self-extracting archive:
 
           letters -t
 
       To test letters quietly, printing only a summary message
       indicating whether the archive is OK or not:
 
           letters -tqq
 
       To extract the complete contents into the current direc-
       tory, recreating all files and subdirectories as neces-
       sary:
 
           letters
 
       To extract all *.txt files (in Unix quote the `*'):
 
           letters *.txt
 
       To extract everything except the *.txt files:
 
           letters -x *.txt
 
       To extract only the README file to standard output (the
       screen):
 
           letters -c README
 
       To print only the zipfile comment:
 
           letters -z
 
LIMITATIONS
       The principle and fundamental limitation of unzipsfx is
       that it is not portable across architectures or operat-
       ing systems, and therefore neither are the resulting ar-
       chives. For some architectures there is limited porta-
       bility, however (e.g., between some flavors of Intel-
       based Unix).
 
       Another problem with the current implementation is that
       any archive with ``junk'' prepended to the beginning
       technically is no longer a zipfile (unless zip(1) is
       used to adjust the zipfile offsets appropriately, as
       noted above). unzip(1) takes note of the prepended
       bytes and ignores them since some file-transfer proto-
       cols, notably MacBinary, are also known to prepend junk.
       But PKWARE's archiver suite may not be able to deal with
       the modified archive unless its offsets have been
       adjusted.
 
       unzipsfx has no knowledge of the user's PATH, so in gen-
       eral an archive must either be in the current directory
       when it is invoked, or else a full or relative path must
       be given. If a user attempts to extract the archive
       from a directory in the PATH other than the current one,
       unzipsfx will print a warning to the effect, ``can't
       find myself.'' This is always true under Unix and may
       be true in some cases under MS-DOS, depending on the
       compiler used (Microsoft C fully qualifies the program
       name, but other compilers may not). Under OS/2 and NT
       there are operating-system calls available that provide
       the full path name, so the archive may be invoked from
       anywhere in the user's path. The situation is not known
       for AmigaDOS, Atari TOS, MacOS, etc.
 
       As noted above, a number of the normal unzip(1L) func-
       tions have been removed in order to make unzipsfx
       smaller: usage and diagnostic info, listing functions
       and extraction to other directories. Also, only stored
       and deflated files are supported. The latter limitation
       is mainly relevant to those who create SFX archives,
       however.
 
       VMS users must know how to set up self-extracting ar-
       chives as foreign commands in order to use any of
       unzipsfx's options. This is not necessary for simple
       extraction, but the command to do so then becomes, e.g.,
       ``run letters'' (to continue the examples given above).
 
       unzipsfx on the Amiga requires the use of a special pro-
       gram, MakeSFX, in order to create working self-extract-
       ing archives; simple concatenation does not work. (For
       technically oriented users, the attached archive is
       defined as a ``debug hunk.'') There may be compatibil-
       ity problems between the ROM levels of older Amigas and
       newer ones.
 
       All current bugs in unzip(1L) exist in unzipsfx as well.
 
DIAGNOSTICS
       unzipsfx's exit status (error level) is identical to
       that of unzip(1L); see the corresponding man page.
 
SEE ALSO
       funzip(1L), unzip(1L), zip(1L), zipcloak(1L), zip-
       grep(1L), zipinfo(1L), zipnote(1L), zipsplit(1L)
 
URL
       The Info-ZIP home page is currently at
           http://www.info-zip.org/pub/infozip/
       or
           ftp://ftp.info-zip.org/pub/infozip/ .
 
AUTHORS
       Greg Roelofs was responsible for the basic modifications
       to UnZip necessary to create UnZipSFX. See unzip(1L)
       for the current list of Zip-Bugs authors, or the file
       CONTRIBS in the UnZip source distribution for the full
       list of Info-ZIP contributors.
 
 
 
Info-ZIP 22 May 2004 (v5.51) UNZIPSFX(1L)