Misc. Reference Manual Pages UNZIPSFX(1L)
NAME
unzipsfx - self-extracting stub for prepending to ZIP
archivesSYNOPSIS
[-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), anumber 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 abil-
ity 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 asa compile-time option, which is now enabled by default since
UnZipSFX version 5.5. Similary, decryption is supported asa compile-time option but should be avoided unless the
attached archive contains encrypted files. Starting withrelease 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 systemsthan is the unzip executable itself. In general a self-
extracting archive made on a particular Unix system, forexample, will only self-extract under the same flavor of
Unix. Regular unzip may still be used to extract the embed-
ded archive as with any normal zipfile, although it willgenerate a harmless warning about extra bytes at the begin-
ning 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 limi-
tation is due to the simplistic manner in which the archive is created; the internal directory structure is not updatedto reflect the extra bytes prepended to the original zip-
file. ARGUMENTS [file(s)] An optional list of archive members to be processed. Regular expressions (wildcards) similar to those inInfo-ZIP Last change: 28 November 2007 (v5.53) 1
Misc. Reference Manual Pages UNZIPSFX(1L) 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. Ifan exclamation point or a caret (`!' or `^') fol-
lows the left bracket, then the range of charac-
ters 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 beinterpreted or modified by the operating system, par-
ticularly 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 subdirec-
tories. 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 follow-
ing option is also enabled:[-d exdir]
An optional directory to which to extract files. By default, all files and subdirectories are recreated inthe current directory; the -d option allows extraction
in an arbitrary directory (always assuming one has per-
mission 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 shellbehavior to be suppressed. In particular, ``-d ~''
(tilde) is expanded by Unix C shells into the name ofthe user's home directory, but ``-d~'' is treated as a
literal subdirectory ``~'' of the current directory. OPTIONSunzipsfx 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 normal listing
Info-ZIP Last change: 28 November 2007 (v5.53) 2
Misc. Reference Manual Pages UNZIPSFX(1L)options (-l, -v and -Z) have been removed, but the testing
option (-t) may be used as a ``poor man's'' listing. Alter-
natively, 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. MODIFIERSunzipsfx 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 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'screator to ensure that text files have the appropriate for-
mat for the local OS. EBCDIC conversion will of course con-
tinue 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 OPTIONSunzipsfx uses the same environment variables as unzip(1L)
does, although this is likely to be an issue only for theperson 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 aversion of unzipsfx with decryption support; that only adds
to the size of the archive. AUTORUN COMMANDWhen unzipsfx was compiled with CHEAP_SFX_AUTORUN defined, a
simple ``command autorun'' feature is supported. You mayenter a command into the Zip archive comment, using the fol-
lowing format:$AUTORUN$>[command line string]
Info-ZIP Last change: 28 November 2007 (v5.53) 3
Misc. Reference Manual Pages UNZIPSFX(1L)When unzipsfx recognizes the ``$AUTORUN$>'' token at the
beginning of the Zip archive comment, the remainder of thefirst line of the comment (until the first newline charac-
ter) is passed as a shell command to the operating system using the C rtl ``system'' function. Before executing thecommand, unzipsfxP displays the command on the console and
prompts the user for confirmation. When the user hasswitched 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 wasrequested 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 permissionsto be world-executable under Unix:
cat unzipsfx letters.zip > letters
chmod 755 letterszip -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 com-
mand installs the new program as a ``foreign command'' capa-
ble 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 andwith 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:Info-ZIP Last change: 28 November 2007 (v5.53) 4
Misc. Reference Manual Pages UNZIPSFX(1L)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
LIMITATIONSThe principle and fundamental limitation of unzipsfx is that
it is not portable across architectures or operating sys-
tems, 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 sincesome 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 directoryin 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 underMS-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 beInfo-ZIP Last change: 28 November 2007 (v5.53) 5
Misc. Reference Manual Pages UNZIPSFX(1L) 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) functionshave 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 techni-
cally 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.
DIAGNOSTICSunzipsfx'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), zipinfo(1L), zipnote(1L), zipsplit(1L) URLThe Info-ZIP home page is currently at
http://www.info-zip.org/pub/infozip/
orftp://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 thecurrent list of Zip-Bugs authors, or the file CONTRIBS in
the UnZip source distribution for the full list of Info-ZIP
contributors.ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:Info-ZIP Last change: 28 November 2007 (v5.53) 6
Misc. Reference Manual Pages UNZIPSFX(1L)_______________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE|
|____________________|__________________|_
| Availability | compress/unzip ||____________________|__________________|_
| Interface Stability| External ||____________________|_________________|
NOTES Source for unzip is available on http://opensolaris.org.Info-ZIP Last change: 28 November 2007 (v5.53) 7