XPK is an interfacing standard between application programs and packer
libraries. Every XPK application program can pack data with any XPK packer.
XPK is copyrighted, but freely distributable for non-commercial use. Some
parts of XPK have a different legal status, ie. PD, GPL or shareware.
Starting with version 3.10 I (Dirk Stöcker) am the programmer of
xpkmaster.library. I continue the work of Urban Dominik Müller and
Christian von Roques with their permission!
This is the main part of the xpk distribution. In this archive are all
the files you really need.
This part of the xpk distribution consists of all the cryptographic
libraries. It may be illegal to export these libraries from the USA,
therefore they are in a seperate archive, which shouldn't be made
internationally available from the USA. We do not yet know of any
restrictions to the import or export of this archive from other
In this archive are all files, which are needed to create own xpk
In this part of the xpk distribution are sources to a lot of xpk stuff.
Xpk supporting programs
- XFH: (1.40)
XFH-Handler is a DOS handler which uses xpkmaster.library to provide
transparent access to compressed files in a given directory or
partition. All compression/decompression is done automatically by the
handler when files are read or written. Compression is optional and
may be switched at any time, allowing for fine control over storage
of data. The compression method may be changed at will. Decompression
is always automatic, you don't have to care about which compressor
was used to create the files.
Author: Matthias Scheler
- Xit: (1.0)
Xit is a AppIcon/AppWindow programming for packing and unpacking data with xpk. It was
made as a replacement for xDrop, but has some more features. The GUI is created using
Author: Laurent Kempé
- XPK-KNIGHT: (1.05)
XPK-KNIGHT is a free configurable, easy graphic user interface for
comfortable usage of most of the important functions whithin the
xpkmaster.library and its correspondending XPK packers.
Author: Alexander Grossberger
- XpkArchive System: (2.0)
xpkarchive.library handles archive creation like LhA or Zoo.
Author: Matthias Meixner
- XPKatana: (1.7a)
Full-featured GUI for XPK, allows (un)packing, features a complete
ARexx port, supports batch jobs, etc... Also supports FileID.library
for filetype identification, and xfdmaster.library for alien packer
decrunching, making it possible to repack most alien packing formats
into a regular XPK format.
Author: Victor Ducedre
- XpkCybPrefs: (1.3)
XpkCybPrefs is an alternative to XpkMasterPrefs. It provides a transparent
"intelligent" packing, according to the filetype (by simply setting "USER"
as xpk packer and configuring once for all, you get everything working).
Some features: Size conditions, "Multipacking" (trying multiple packers on
data, keeping the best or fastest-decrunching etc... one!!), report-window
with full info, user-choice requester ETC ETC... (100% user-configurable)
Author: Alexis Nasr
The solution to all these problems is xpk.
- Many programs that should offer data compression (e.g. HD backup
utilities) do not.
- Many programs that offer data compression use old, slow, inefficient or
- All programs that offer data compression offer just one algorithm, you are
stuck with that one.
- Many good packers are not used by any application program and have no
good user interface.
- The installation of most packers requires AmigaShell knowledge (putting
LhA in the path so that Directory Opus can find it)
- The decompression of all files packed with existing packers requires
knowledge about the packer used for compression.
- Many compression programs can not deal with files that are larger than
- The existing compression programs are either slow or have a low
- There is no way to support upcoming hardware compression cards in already
existing applications yet.
- For none of the current compression programs exists a real decompressing
file handler that uses no dirty tricks to decompress files on the fly.
The xpk standard is to data compression what xpr is to file transmission.
It consists of three layers:
- Level 2 - xpkarchive.library The application/xpk interface for
Offers archiving functions like "add this file to that archive" or
"show me the contents of that archive".
- Level 1 - xpkmaster.library The application/xpk interface for
Offers functions like "Compress this file to that chunk of memory
using that algorithm". All combinations permitted: Mem to mem, file
to file, mem to file, decompression and compression. Asynchronous
packing possible. Very convenient tag based caller interface.
Determines automatically out which sub library to use for
decompression. Returns detailed error messages.
- Level 0 - xpk sub libraries The xpk/packer interface
All level 0 libraries offer the same functions. They're very small.
Typical calls are: "Tell me what you can", "Compress this chunk of
memory to another chunk of memory", and "Decompress this chunk of
memory to another chunk of memory". These libs are very limited,
their functionality is expanded by xpkmaster.library. No one would
want to talk to a sub library directly.
In addition, there is an optional standard xpk file format.
All parts of the xpk standard are implemented in shared libraries. There
is one master library for archive level access, one master library for file
level access, and one library for each compression algorithm.
Xpk File format:
Offers checksums, chunks (important when Seek()s on a compressed file
become necessary) and automatic handling by the xpkmaster.library. This
means that any new packer that can only pack mem to mem has its own file
format immediately. And most important: The name of the packer library is
contained in the file. Therefore, copying a new sub library to LIBS: is
all you have to do to install a new packer (easily done in installation
scripts); xpkmaster.library recognizes the new file type immediately. No
changes to xpkmaster.library or the application programs necessary. In
case the xpk file format is not used, the introduction of a new packer
requires a change the xpkmaster.library.
It is planned, that libraries of a lower level can offer higher level
functions. They should be able to override the automatic functionality
expansion by the higher level library. xpkmaster.library, for example,
enforces the use of the xpk standard file format. It should be possible to
override this by a sub library. Therefore an new library interface will be
created, the xex libraries.
Porting to other operating systems
The sources of xpkmaster.library, its tools and some libraries are freely available.
This enables programmers to create ports of the XPK systems, which run on different
Different parts of XPK system are under different copyright states. As the original
authors want to encourage ports to other operating system, I think it will be fine
to assume all XPK packets are under GNU license (a copy of it is included in
user archive). But in general this must not be fully true. To be on secure side contact
the authors or me to get deeper information. Please always contact me first before
doing really much work.
There have been different attempts of XPK ports. I only know one working version done by
Vesa Halttunen. He ported the master XPK system,
most of the example tools and some sub libraries to UNIX (working on different
plattforms). Check his XPK page.
This software is still in BETA state! Any help would be fine. He is the maintainer of
this port, so contact him if you have problems related to that port!
If you have any comment, problems, suggestions or WWW addresses
concerning XPK, mail me at firstname.lastname@example.org.
This page was times
accessed since 24.02.2001. Information about last update you can see in source of
the HTML file.