forked from KolibriOS/kolibrios
e9b1c1bac6
git-svn-id: svn://kolibrios.org@6725 a494cfbc-eb01-0410-851d-a64ba20cac60
337 lines
14 KiB
Groff
337 lines
14 KiB
Groff
.\" Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
|
|
.\"
|
|
.\" See the accompanying file LICENSE, version 2009-Jan-02 or later
|
|
.\" (the contents of which are also included in unzip.h) for terms of use.
|
|
.\" If, for some reason, all these files are missing, the Info-ZIP license
|
|
.\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
|
|
.\"
|
|
.\" unzipsfx.1 by Greg Roelofs
|
|
.\"
|
|
.\" =========================================================================
|
|
.\" define .EX/.EE (for multiline user-command examples; normal Courier font)
|
|
.de EX
|
|
.in +4n
|
|
.nf
|
|
.ft CW
|
|
..
|
|
.de EE
|
|
.ft R
|
|
.fi
|
|
.in -4n
|
|
..
|
|
.\" =========================================================================
|
|
.TH UNZIPSFX 1L "20 April 2009 (v6.0)" "Info-ZIP"
|
|
.SH NAME
|
|
unzipsfx \- self-extracting stub for prepending to ZIP archives
|
|
.PD
|
|
.SH SYNOPSIS
|
|
\fB<name of unzipsfx+archive combo>\fP [\fB\-cfptuz\fP[\fBajnoqsCLV$\fP]]
|
|
[\fIfile(s)\fP\ .\|.\|. [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.]]
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH DESCRIPTION
|
|
\fIunzipsfx\fP is a modified version of \fIunzip\fP(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, \fIunzipsfx\fP 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
|
|
\fIunzip\fP have been removed. Among these are the usage (or help) screen,
|
|
the listing and diagnostic functions (\fB\-l\fP and \fB\-v\fP), 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.
|
|
.PP
|
|
\fBNote that
|
|
self-extracting archives made with\fP \fIunzipsfx\fP \fBare no more (or less)
|
|
portable across different operating systems than is
|
|
the\fP \fIunzip\fP \fBexecutable itself.\fP 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 \fIunzip\fP 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.
|
|
\fIDespite this\fP, however, the self-extracting archive is technically
|
|
\fInot\fP 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.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH ARGUMENTS
|
|
.IP [\fIfile(s)\fP]
|
|
An optional list of archive members to be processed.
|
|
Regular expressions (wildcards) similar to those in Unix \fIegrep\fP(1)
|
|
may be used to match multiple members. These wildcards may contain:
|
|
.RS
|
|
.IP *
|
|
matches a sequence of 0 or more characters
|
|
.IP ?
|
|
matches exactly 1 character
|
|
.IP [.\|.\|.]
|
|
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 \fIexcept\fP
|
|
the characters inside the brackets is considered a match).
|
|
.RE
|
|
.IP
|
|
(Be sure to quote any character that might otherwise be interpreted or
|
|
modified by the operating system, particularly under Unix and VMS.)
|
|
.IP [\fB\-x\fP\ \fIxfile(s)\fP]
|
|
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, ``\fCfoosfx *.[ch] -x */*\fR'' would extract all C source files
|
|
in the main directory, but none in any subdirectories. Without the \fB\-x\fP
|
|
option, all C source files in all directories within the zipfile would be
|
|
extracted.
|
|
.PP
|
|
If \fIunzipsfx\fP is compiled with SFX_EXDIR defined, the following option
|
|
is also enabled:
|
|
.IP [\fB\-d\fP\ \fIexdir\fP]
|
|
An optional directory to which to extract files. By default, all files
|
|
and subdirectories are recreated in the current directory; the \fB\-d\fP
|
|
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,
|
|
``\fC\-d\ ~\fR'' (tilde) is expanded by Unix C shells into the name
|
|
of the user's home directory, but ``\fC\-d~\fR'' is treated as a
|
|
literal subdirectory ``\fB~\fP'' of the current directory.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH OPTIONS
|
|
\fIunzipsfx\fP supports the following \fIunzip\fP(1L) options: \fB\-c\fP
|
|
and \fB\-p\fP (extract to standard output/screen), \fB\-f\fP and \fB\-u\fP
|
|
(freshen and update existing files upon extraction), \fB\-t\fP (test
|
|
archive) and \fB\-z\fP (print archive comment). All normal listing options
|
|
(\fB\-l\fP, \fB\-v\fP and \fB\-Z\fP) have been removed, but the testing
|
|
option (\fB\-t\fP) 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.
|
|
.PP
|
|
See \fIunzip\fP(1L) for a more complete description of these options.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH MODIFIERS
|
|
\fIunzipsfx\fP currently supports all \fIunzip\fP(1L) modifiers: \fB\-a\fP
|
|
(convert text files), \fB\-n\fP (never overwrite), \fB\-o\fP (overwrite
|
|
without prompting), \fB\-q\fP (operate quietly), \fB\-C\fP (match names
|
|
case-insensitively), \fB\-L\fP (convert uppercase-OS names to lowercase),
|
|
\fB\-j\fP (junk paths) and \fB\-V\fP (retain version numbers); plus the
|
|
following operating-system specific options: \fB\-X\fP (restore VMS
|
|
owner/protection info), \fB\-s\fP (convert spaces in filenames to underscores
|
|
[DOS, OS/2, NT]) and \fB\-$\fP (restore volume label [DOS, OS/2, NT, Amiga]).
|
|
.PP
|
|
(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.)
|
|
.PP
|
|
See \fIunzip\fP(1L) for a more complete description of these modifiers.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH "ENVIRONMENT OPTIONS"
|
|
\fIunzipsfx\fP uses the same environment variables as \fIunzip\fP(1L) does,
|
|
although this is likely to be an issue only for the person creating and
|
|
testing the self-extracting archive. See \fIunzip\fP(1L) for details.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH DECRYPTION
|
|
Decryption is supported exactly as in \fIunzip\fP(1L); that is, interactively
|
|
with a non-echoing prompt for the password(s). See \fIunzip\fP(1L) for
|
|
details. Once again, note that if the archive has no encrypted files there
|
|
is no reason to use a version of \fIunzipsfx\fP with decryption support;
|
|
that only adds to the size of the archive.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH AUTORUN COMMAND
|
|
When \fIunzipsfx\fP 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:
|
|
.PP
|
|
.EX
|
|
$AUTORUN$>[command line string]
|
|
.EE
|
|
.PP
|
|
When \fIunzipsfx\fP 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, \fIunzipsfx\fP displays the command on the console and prompts
|
|
the user for confirmation. When the user has switched off prompting by
|
|
specifying the \fB-q\fP option, autorun commands are never executed.
|
|
.PP
|
|
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 \fB-q\fP option.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH EXAMPLES
|
|
To create a self-extracting archive \fIletters\fP from a regular zipfile
|
|
\fIletters.zip\fP and change the new archive's permissions to be
|
|
world-executable under Unix:
|
|
.PP
|
|
.EX
|
|
cat unzipsfx letters.zip > letters
|
|
chmod 755 letters
|
|
zip -A letters
|
|
.EE
|
|
.PP
|
|
To create the same archive under MS-DOS, OS/2 or NT (note the use of the
|
|
\fB/b\fP [binary] option to the \fIcopy\fP command):
|
|
.PP
|
|
.EX
|
|
copy /b unzipsfx.exe+letters.zip letters.exe
|
|
zip -A letters.exe
|
|
.EE
|
|
.PP
|
|
Under VMS:
|
|
.PP
|
|
.EX
|
|
copy unzipsfx.exe,letters.zip letters.exe
|
|
letters == "$currentdisk:[currentdir]letters.exe"
|
|
zip -A letters.exe
|
|
.EE
|
|
.PP
|
|
(The VMS \fIappend\fP 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:
|
|
.PP
|
|
.EX
|
|
MakeSFX letters letters.zip UnZipSFX
|
|
.EE
|
|
.PP
|
|
(MakeSFX is included with the UnZip source distribution and with Amiga
|
|
binary distributions. ``\fCzip -A\fR'' doesn't work on Amiga self-extracting
|
|
archives.)
|
|
To test (or list) the newly created self-extracting archive:
|
|
.PP
|
|
.EX
|
|
letters \-t
|
|
.EE
|
|
.PP
|
|
To test \fIletters\fP quietly, printing only a summary message indicating
|
|
whether the archive is OK or not:
|
|
.PP
|
|
.EX
|
|
letters \-tqq
|
|
.EE
|
|
.PP
|
|
To extract the complete contents into the current directory, recreating all
|
|
files and subdirectories as necessary:
|
|
.PP
|
|
.EX
|
|
letters
|
|
.EE
|
|
.PP
|
|
To extract all \fC*.txt\fR files (in Unix quote the `*'):
|
|
.PP
|
|
.EX
|
|
letters *.txt
|
|
.EE
|
|
.PP
|
|
To extract everything \fIexcept\fP the \fC*.txt\fR files:
|
|
.PP
|
|
.EX
|
|
letters -x *.txt
|
|
.EE
|
|
.PP
|
|
To extract only the README file to standard output (the screen):
|
|
.PP
|
|
.EX
|
|
letters -c README
|
|
.EE
|
|
.PP
|
|
To print only the zipfile comment:
|
|
.PP
|
|
.EX
|
|
letters \-z
|
|
.EE
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH LIMITATIONS
|
|
The principle and fundamental limitation of \fIunzipsfx\fP 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).
|
|
.PP
|
|
Another problem with the current implementation is that any archive
|
|
with ``junk'' prepended to the beginning technically is no longer a zipfile
|
|
(unless \fIzip\fP(1) is used to adjust the zipfile offsets appropriately,
|
|
as noted above). \fIunzip\fP(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.
|
|
.PP
|
|
\fIunzipsfx\fP 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, \fIunzipsfx\fP 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.
|
|
.PP
|
|
As noted above, a number of the normal \fIunzip\fP(1L) functions have
|
|
been removed in order to make \fIunzipsfx\fP 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.
|
|
.PP
|
|
VMS users must know how to set up self-extracting archives as foreign
|
|
commands in order to use any of \fIunzipsfx\fP's options. This is not
|
|
necessary for simple extraction, but the command to do so then becomes,
|
|
e.g., ``\fCrun letters\fR'' (to continue the examples given above).
|
|
.PP
|
|
\fIunzipsfx\fP 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.
|
|
.PP
|
|
All current bugs in \fIunzip\fP(1L) exist in \fIunzipsfx\fP as well.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH DIAGNOSTICS
|
|
\fIunzipsfx\fP's exit status (error level) is identical to that of
|
|
\fIunzip\fP(1L); see the corresponding man page.
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH "SEE ALSO"
|
|
\fIfunzip\fP(1L), \fIunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L),
|
|
\fIzipgrep\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L)
|
|
.PD
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH URL
|
|
The Info-ZIP home page is currently at
|
|
.EX
|
|
\fChttp://www.info-zip.org/pub/infozip/\fR
|
|
.EE
|
|
or
|
|
.EX
|
|
\fCftp://ftp.info-zip.org/pub/infozip/\fR .
|
|
.EE
|
|
.PD
|
|
.\" =========================================================================
|
|
.SH AUTHORS
|
|
Greg Roelofs was responsible for the basic modifications to UnZip necessary
|
|
to create UnZipSFX. See \fIunzip\fP(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.
|
|
.PD
|