Man Linux: Main Page and Category List

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(1) 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
       capabilities  in  regular unzip have been removed.  Among these are the
       usage (or help) screen, the listing and diagnostic  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.   Similarly,  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  operating 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 zipfile.

ARGUMENTS

       [file(s)]
              An  optional  list  of archive members to be processed.  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  ending  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  otherwise  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   characters   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 following 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(1) 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  normal  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(1) for a more complete description of these options.

MODIFIERS

       unzipsfx currently supports all unzip(1) modifiers:  -a  (convert  text
       files),  -n  (never  overwrite),  -o  (overwrite 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
       conversion will of course continue to be supported  since  the  zipfile
       format implies ASCII storage of text files.)

       See unzip(1) for a more complete description of these modifiers.

ENVIRONMENT OPTIONS

       unzipsfx uses the same environment variables as unzip(1) does, although
       this is likely to be an issue only for the person creating and  testing
       the self-extracting archive.  See unzip(1) for details.

DECRYPTION

       Decryption  is supported exactly as in unzip(1); that is, interactively
       with a non-echoing  prompt  for  the  password(s).   See  unzip(1)  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 supported. You may enter a command  into
       the Zip archive comment, using the following format:

           $AUTORUN$>[command line string]

       When  unzipsfx  recognizes the ‘‘$AUTORUN$>’’ token at the beginning of
       the Zip archive comment, the remainder of the first line of the comment
       (until the first newline character) is passed as a shell command to the
       operating system using the C rtl ‘‘system’’ function. Before  executing
       the  command,  unzipsfx displays the command on the console and prompts
       the user for confirmation.  When the user has switched off prompting by
       specifying the -q option, autorun commands are never executed.

       In  case  the  archive  comment  contains additional 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  regular  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 command):

           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
       command.)  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 directory, recreating
       all files and subdirectories as necessary:

           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  operating  systems,  and  therefore
       neither  are  the  resulting archives.  For some architectures there is
       limited portability, 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 protocols, 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 general 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(1)  functions  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 archives  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 program, MakeSFX,
       in  order  to   create   working   self-extracting   archives;   simple
       concatenation  does  not  work.   (For  technically oriented users, the
       attached archive is  defined  as  a  ‘‘debug  hunk.’’)   There  may  be
       compatibility problems between the ROM levels of older Amigas and newer
       ones.

       All current bugs in unzip(1) exist in unzipsfx as well.

DIAGNOSTICS

       unzipsfx’s exit status (error level) is identical to that of  unzip(1);
       see the corresponding man page.

SEE ALSO

       funzip(1),   unzip(1),  zip(1),  zipcloak(1),  zipgrep(1),  zipinfo(1),
       zipnote(1), zipsplit(1)

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(1) 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.