A. Build an interface to the latest versions of [login to view URL] exactly as found in
the attached file sevenzipwrap.pas. For your convenience the old sources of
7zip which have been converted into a DLL that exports the functions
declared in [login to view URL] have been attached to this email as "7zip wrap
sources for mia.7zip". Note that these sources are almost 10 years old. It
will not be possible to update these because the underlying sources have
changed too much between the 10 year old 7zip sources and the 7zip sources
that are available today.
0) All functions and parameters must be implemented just as in the current
version in order to completely compatible our existing main application
which will use your code.
1) All formats which are available with the current 7zip library have to be
supported for compression, extraction, updates, testing, deletion, etc. This
includes native 7zip formats such as 7z and also third party formats such as
WIM.
2) You must support all compression settings that are available for each
compression format, including stored (no compression) compression settings.
You are free to define your own "compression setting strings" as part of the
lpAdvancedOptions parameter of the compression function. You must also
support setting the number of threads to be used as part of this compression
setting string parameter, because new versions of 7zip are highly
multi-threaded.
3) You must support the highest compression settings that are possible in
the 7zip library for the native 7z format, and also for all other formats
such as ZIP. For example, while producing ZIP compatible archives, 7zip
actually produces files that are smaller than the ZIP files produced by
other archivers such as WinZip - by as much as 10%. Again as another
example, there is an "Ultra" compression setting in 7zip which requires
several gigabytes of memory during compression (and also with very large
extraction memory requirements); these should be fully supported.
4) Some example compression setting strings are provided below for your
convenience. Please note that some of these settings may be obsolete as of
the latest 7zip version, so this is why you are free to define your own
compression setting strings:
1- '-ms=off -mhc=off -m0=None -m0=Copy ' // store data in uncompressed form.
2- '-ms=off -mhc=off -m0=LZMA -m0d=15 -m0mf=hc3 -m0fb=32 ' // compress data
using the LZMA data compression algorithm and a 32 KB buffer for hash
chaining.
3- '-ms=off -mhc=off -m0=LZMA -m0d=21 -m0mf=bt4 -m0fb=32 ' // compress data
using the LZMA data compression algorithm and a 4 MB buffer for binary
trees.
4- '-ms=on -mhc=on -m0=BCJ -m1=LZMA -m1d=23 -m1mf=bt4 -m1fb=64 ' pre-process
data using binary call jump converters to increase compressability, treat
all files as a continuous data stream, and use an 8 MB buffer for LZMA
compression.
5- '-ms=on -mhc=on -m0=BCJ2 -m1=LZMA -m1d=25 -m1mf=bt4b -m1fb=255 -m2=LZMA
-m2d=20 -m2mf=bt4b -m2fb=64 -m3=LZMA -m3d=20 -m3mf=bt4b -m3fb=64 -mb0:1
-mb0s1:2 -mb0s2:3 ' // pre-process data, compress from a continuous stream,
and use a 32 MB LZMA buffer.
5) Please ensure that you support both the older LZMA compression standard
and the newer LZMA2 compression standard when creating 7zip archives. This
can again be decided from the compression settings string parameter.
6) All work should be done with Embarcadero RAD Studio Delphi XE2. You
should not be creating any external C++ DLL as in the example provided;
because now it is possible to build direct Delphi interfaces to [login to view URL] from
a single Delphi unit and/or project.
7) Full Unicode support is required - both for storing Unicode file names
inside archives, and for extracting files/compressing files inside archives
to/from Unicode folder paths on the real file system.
8) The current (old version) DLL sources are at 7zipwrap_sources for [login to view URL]
only\src\7zipWrap\src\[login to view URL] - it is a Visual C++ 2003 project.