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)
