Bash Cures Cancer
Learn the UNIX/Linux command line

Home     Man Pages     SpamDefeator


UNZIPSFX(1L)							 UNZIPSFX(1L)



NAME
       unzipsfx - self-extracting stub for prepending to ZIP archives

SYNOPSIS
        [-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 pur-
       pose 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.   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 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 con-
	      tain:

	      *	     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  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	 pro-
	      cessing.	 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 with-
	      out 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	 com-
       ment).	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(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 (overwrite without prompting), -q
       (operate quietly), -C (match names  case-insensitively),	 -L  (convert
       uppercase-OS  names to lowercase), -j (junk paths) and -V (retain ver-
       sion numbers); plus the following operating-system  specific  options:
       -X  (restore  VMS  owner/protection info), -s (convert spaces in file-
       names 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(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, interac-
       tively 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 supported. 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	 com-
       ment  (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, unzipsfxP 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 exe-
       cuted.

       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 regular zipfile
       letters.zip and change the new archive's permissions to be  world-exe-
       cutable 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-extract-
       ing  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, recreat-
       ing 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 appropri-
       ately,  as  noted  above).  unzip(1) takes note of the prepended bytes
       and ignores them since some file-transfer  protocols,  notably  MacBi-
       nary, 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(1L) 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	 nec-
       essary  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 concatena-
       tion 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(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),  zipgrep(1L),	 zip-
       info(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 nec-
       essary 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)


UNIX/Linux commands referenced on this page:
  1. which
  2. as
  3. unzip
  4. more
  5. at
  6. test
  7. write
  8. size
  9. cat
  10. chmod
  11. zip
  12. file
  13. find
  14. true
  15. make
  16. who
  17. users
  18. man