dwww Home | Manual pages | Find package

UNZIPSFX(1)                 General Commands Manual                 UNZIPSFX(1)

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.  In-
       stead 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  at-
       tached  archive contains encrypted files. Starting with release 5.5, an-
       other 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 exe-
       cutable itself.  In general a self-extracting archive made on a particu-
       lar Unix system, for example, will only self-extract under the same fla-
       vor 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 lim-
       itation 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 ex-
              pressions (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 brack-
                     ets is considered a match).

              (Be sure to quote any character that might  otherwise  be  inter-
              preted  or  modified  by the operating system, particularly under
              Unix and VMS.)

       [-x xfile(s)]
              An optional list of archive members to be excluded from  process-
              ing.  Since wildcard characters match directory separators (`/'),
              this  option  may be used to exclude any files that are in subdi-
              rectories.  For example, ``foosfx *.[ch] -x */*''  would  extract
              all  C source files in the main directory, but none in any subdi-
              rectories.  Without the -x option, all C source files in all  di-
              rectories 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 op-
              tion 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  test-
       ing 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 (op-
       erate quietly), -C (match names case-insensitively), -L (convert  upper-
       case-OS names to lowercase), -j (junk paths) and -V (retain version num-
       bers);  plus  the  following operating-system specific options:  -X (re-
       store VMS owner/protection info), -s (convert spaces in filenames to un-
       derscores [DOS, OS/2, NT]) and -$ (restore volume label [DOS, OS/2,  NT,
       Amiga]).

       (Support for regular ASCII text-conversion may be removed in future ver-
       sions,  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 de-
       tails.  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 re-
       mainder 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 let-
       ters.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  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 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  nei-
       ther  are  the resulting archives.  For some architectures there is lim-
       ited 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, un-
       zipsfx 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 operat-
       ing-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 re-
       moved 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  neces-
       sary 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  be-
       tween 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),  zip-
       note(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 neces-
       sary  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.

Info-ZIP                      20 April 2009 (v6.0)                  UNZIPSFX(1)

Generated by dwww version 1.16 on Sat Dec 6 17:30:32 CET 2025.