PeaZip file archiver free zip unzip utility


free zip file utility tool
free extract zip utility
free unzip utility tool

open source extract zip utility
Download | PeaZipFAQ | Help | Forum peazip free zip utility forum

portable zip utility compression tool
open 7ZIP ACE PAQ RAR TAR ZIP tool encrypt split files
free zip utility unzip files tool



free zip unzip software download
free extrat zip file utility download

[ Download PeaZip ]

 free unzip utility download

free zip software utility unzip toolWindows free zip utility Linux unzip toolLinux

portable zip utility unzip tool

freeware zip compression utility software



portable open source zip compression utility

PeaZip free archiver Development


Roadmap portable zip file utility tool

peazip free zip rar tar utility for windows and linuxCurious about ideas and works behind PeaZip archiver? Click the picture to enlarge the roadmap of the software development.
To know more, you can see the detailed changelog of previous PeaZip free archiver releases.





Project's goals portable free zip utility unzip software

  1. PEA - Pack Encrypt Authenticate

    • The initial goal of the application was creating a frontend for Pea archiver utility, implementing PEA archive format, designed ground up by myself to primarily focus on security and integrity: I wanted something performing strong authenticated encryption and perform integrity checks on both input objects and output volume(s). Pea offer those characteristics, and is open source (LGPL) freeware; file format specifications are released under public domain. I did a bit of cryptanalisys of it (see Documentation package); I hope more authoritative people may analyze it further.
    • Most archivers offer strong encryption, but bounded to password-only auhentication: Pea executable offers two factor authentication to increase encryption's security margins against password-related threats, like social engineering, dictionary attacks, bruteforcing, keylogging...
  2. Bring focus on Lazarus/FreePascal

    • I'm developing PeaZip project in FreePascal language, under Lazarus IDE. I like Pascal-related languages and I think Lazarus/FreePascal is one of the best cross-platform IDE available; I like it even more because it is open source and because it's growing day by day in a more mature and powerful IDE. I'll be glad to bring a bit of developer's attention on Lazarus/FreePascal through my project.
  3. Archiving and compression

    • Designing PeaZip UI, I'm aiming to focus on archive-specific tools, operations and needs rather than focusing on offering a faithful emulation of a file browser, like many mainstream archivers does. Saving lists of objects to be archived, saving archiving/extraction job definitions and receiving detailed job log after operations are primary goals of PeaZip UI. However, PeaZip's system integration, if desired, allows the user to perform most common operations (add to archive, extract here, encrypt, split file etc) without even care of the main program UI.
    • 7-Zip: thanking Igor Pavlov and Myspace choice of offering 7z under LGPL I was able to easily add support to many mainstream archive and compression formats to PeaZip, transforming it from a niche project (formerly named Pea-Peach) to a possibly wider targeted software. I hope I can turn back to them part of the benefit supporting .7z archive format, expecially on Linux systems, offering a ready to use solution to extract and archive in .7z format among others.
    • ARC: a new, very promising archive format, featuring powerful but efficient compression, strong encryption and recovery records.
    • PAQ/LPAQ: today one of the most promising research project in the file compression's field is Matt Mahoney's Paq. Many different implementation and branches exists, most as command line binaries and some integrated in archivers with GUI (like WinRK, WinUDA, KGB Archiver etc). PeaZip act as GUI fronted to Paq too (see documentation for details on versions supported), hoping to contribute to the diffusion of the format and in bringing focus on this interesting research project.
    • QUAD/BALZ: Ilia Muraviev's QUAD and BALZ are very promising ROLZ-based compression software featuring high compression ratio and fast decompression, making them very well suited in scenarios were decompression occurs more often than compression (i.e. package release).
    • Strip/UPX: I often use Strip/UPX on executables I compile (including PeaZip's ones); the GUI frontend for Strip/UPX in PeaZip comes to be very handy for me and I hope it can be an useful plus for many other developers to reduce executables size.
    • Two factor authentication: from version 2.1 PeaZip can use keyfiles for any supported format featuring encryption. The SHA256 hash of the keyfile (no size limit) is encoded in Base64 (RFC 4648) and prepended to the password. So, it is possible to work on archives encrypted in that way using PeaZip or any application following the same convention, or simply entering the Base64-encoded hash as the first part of the password.
Notes portable free zip utility unzip software

Note on UTF-8 support
From version 2.2 UTF-8 character encoding is supported (even if, currently, using the experimental 0.9.25 build of Lazarus IDE), allowing to properly handle extended characters in filenames and to deploy localization of PeaZip's user interface text in any language.
It should be noted however that, at present level of development of Lazarus/FreePascal project, most of the underlying FreePascal file-handling routines are still ANSI-only, meaning the UTF-8 strings PeaZip uses internally still have to be translated to ANSI strings to be passed to certain functions.
As PeaZip aims 1) to stay cross-platform and 2) to bridge the gap between GUI and console worlds, allowing to easily export jobs as command lines, UTF-8 support is utterly complicated because each system / desktop environment / widgetset PeaZip is ported to has different levels and ways of supporting UTF-8 encoding for different APIs, for system pipes, for command line interpreters etc.
This issue currently causes:
  • PeaZip cannot browse files/dirs containing characters which are not featured in host system’s character’s set (they will be replaced by ? widlcard) due to the need of ANSI translation for strings passed to certain FPC routines;
  • decoding of names of archived objects using extended characters is not straightforward and is accomplished with a workaround using ? wildcard for extended characters (over ANSII code 126, ~ character), that may lead the archive browser to not accurately present archive’s content (switching the browser to flat view mode may be helpful in some cases), however the ability of operate (test, extract etc) on the whole archive is not affected by this issue.
Note on drag and drop (Windows)
From version 2.1 it is possible to drag items from application to system (Windows version).
PeaZip uses a custom drag&drop to system feature that doesn’t need to copy files being dragged to system’s temp folder before, resulting in faster operation when big files are involved, and in better security if temp folder has not the same desired security policies of actual output folder.
This custom drag and drop function will not show default Windows drag and drop cursors and it can drag files to the path of (file)Explorer windows with Address field enabled (as it is by default on all Windows versions), or to the desktop; it will prompt a directory selection dialog if the path is not recognized i.e. content is dropped to an application other than (file)Explorer.

Note on PeaZip's context menu (Windows)
Please note that launching the program through links in SendTo allows receiving multiple input arguments from the command line for each instance of the program; those links can be customized editing the link files in SendTo folder.
Conversely, links in Context Menu can receive a single input argument from command line for each instance of the program; this limitation need changing programming approach to be avoided, see in this discussion thread in example.
Moreover, Context Menu items can be customized only editing the registry, which is inherently more complex (and potentially more dangerous) that editing a link file as in previous case; that’s why links in SendTo was the first system’s integration mechanism implemented, anyway Context Menu integration was added in version 1.7 alongside the classic SendTo integration.
At present level of development PeaZip’s Context Menu items can accept a single input argument; extraction, test, list, add to separate archives and split feature works just fine with this limitation, since they launch in parallel one instance for each input argument, but add to archive features cannot be replicated (unless there is only a single object to archive).
For that reason it’s recommended to keep Add to archive, Add to .7z and Add to zip links in SendTo menu.
For similar reason program’s entries in Windows context menu are not grouped in a subfolder since it will involve much more complex (and potentially more dangerous) modifications to be written to registers than creating separate entries.

Note on PEA archive type limitations

Such a list can be all but complete, however: when I designed PEA archive format I was less experienced and I basically didn't take in account the need to browse the archive or to partially extract objects; just to create and extract it.
Since filenames are, by design, saved along file streams, there is not an easy way to accomplish it without parsing the entire archive (which can be a reasonable solution only for small archives) or without changing format specifications breaking the compatibility with former versions.
A workaround I may implement in future to allow archive browsing could be creating an extra text filecontaining filenames, saved as first archive's object; that will not introduce backward incompatibility since previos PEA version could still correctly handle the new archives (just having the list-file as extra content) and will be quite painless introducing negligible space and speed payload, unless archiving many small files.
This is just an hypothetical evaluation and there still is not a roadmap about it. Anyway this is a PEA format related issue has no impact on users using PeaZip to handle formats other than PEA.

Notes for developes freeware zip file utility unzip tool

Packages
PeaZip sources are contained in the peazip-*.src.zip package.
PeaZip and PeaZip_portable shares the same sources being PeaZip installable basically the same portable application packaged into an installable format: Inno Setup's .exe for Windows, DEB, RPM and TGZ for Linux.

Compilation, build and porting
PeaZip, Pea and Gwrap are written in FreePascal (highly compatible with Delphi and ObjectPascal languages) and require Lazarus IDE free zip compression utility unzip software to be compiled; Windows setup scripts (.iss files) are developed using Inno Setup.
To compile PeaZip binaries open the .lpi file of the desired binary (i.e. peach.lpi for peazip binary) and select "build all".
FreePascal supports multiple widgetsets (Win32, WinCE, GTK1, GTK2, Qt, Carbon, fpGUI) to allow compilation of GUI applications for the various supported systems and to create different “flavours” of the application for platforms supporting multiple widgetsets (i.e Linux).
PeaZip's sourcecode is cross platform, platform-specific code portions are contained in conditional compilations blocks.
Deploying the application to other targets than MSWINDOWS and LINUX may require adaptation of those platform specific areas (and possibly other fine-tunings); PC-BSD users successfully built PeaZip on *BSD platform.
PeaZip will also need various backend compression and archiving applications to be reachable in expected directories within the application's path, please refer to the structure of any of the precompiled packages, either installable or portable, to see what third parts binaries must be included, and refer to respective Authors for ports of those utilities.
Being PeaZip programmed as frontend/backend application, missing or unwanted backend binaries can be omitted, at the cost of losing the ability of handling supported formats; for the same reason, backend binaries can be freely replaced with 64 bit counterparts or with updated versions (which will work fine as long as they follow the same syntax).
PeaZip code should be fairly easy to port on Delphi and other Pascal dialects; the underlying crypto library free file zip utility unzip tool, developed and maintained by Wolfgang Ehrhardt, is explicitly written to be portable to most or all Pascal dialects, however due to some ASM parts some of its features may be x86 processor specific.

Testing
PeaZip free archiver should run on all Windows and Linux systems (on Linux it may require some gtk/gdk libraries, like libgdk_pixbuf); the program is tested on:
  • Windows 98SE;
  • Windows 2000; Windows XP and Windows Vista, 32 and 64 bit
  • various 32 and 64 bit Linux with GTK1 and/or GTK2 and Gnome and/or KDE

Cryptoanalisys

You can find a stub of cryptoanalisys of PEA archive format on PEA online help (.pdf)

PEA archive support in third parts software

To support Pea file format in your applications you may follow one of those ways:
  • use directly the executable Pea archiving utility (LGPL freeware) passing parameters through command line, as in PeaZip;
  • use Pea sourcecode as library to call Pea-related functions from your code (as in the demo application in "sources" package);
  • create a new implementation following the file format specifications, which are released under public domain and, as for what is known to the Author, are free and unencumbered for any use.

 



PeaZip project is hosted on:
SourceForge.net Logo




Author's website
© 2006 Giorgio Tani


PeaZip free zip utility portable unzip tool
free zip utility open source unzip tool
free zip file compression tool
free extract zip file unzip utility free zip compression utility portable zip file utility unzip software compression tool