Universal Extractor

Last Modified: Sun, 08/05/2007 - 17:04

Introduction

Universal Extractor Feedback
If you have any questions about, or find any problems with, Universal Extractor, please post your comments to the UniExtract topic on the MSFN message board.  This has become the main point of discussion for this project.

Universal Extractor is a program do to exactly what it says: extract files from any type of archive, whether it's a simple zip file, an installation program, or even a Windows Installer (.msi) package.  This is still a work in progress (see details below), but so far it's proven quite useful and I feel others can also benefit from it.

I should stress that this application is not intended to be a general purpose archiving program.  It will never replace WinRAR, 7-Zip, etc.  What it will do is allow you to extract files from virtually any type of archive, regardless of source, compression method, etc.  The original motivation behind this project was that I wanted an easy, convenient way to extract files from installation packages, such as Inno Setup or Windows Installer packages, without pulling up a command line every time.  In the process I got a little carried away and ended up throwing in support for every kind of archive format I possibly could find.

Universal Extractor, like most of my Windows programs, is written in AutoIt, a powerful open source scripting language.  Universal Extractor itself, however, is just a front-end that uses many other programs to do the dirty work.  Please see the Credits section below for additional information.

Return to top

Screenshots

UniExtract Context Menu
Universal Extractor context menu

UniExtract Application
Universal Extractor file/destination GUI

Download  Current Version: 1.5, Released: 02/22/2007

UniExtract Installer (4.6 MB) - This is the recommended download.  The installer will automatically install the application and optionally integrate with the Windows Explorer context menu.  This package does not contain source code.

UniExtract Binary Archive (4.44 MB) - This archive contains the binaries.  Download this if you don't want to use the installer.

UniExtract Source Code (110.26 KB) - This archive only contains the source code, but it includes all support files as well (compiler scripts, installer, etc.).  This is best to download (along with the binary archive) if you want to help further development of UniExtract.

ChangeLog, ToDo - UniExtract development details

Universal Extractor Download Archive - archived versions of all official binary and source code releases

Language Files

Note: As of version 1.4, Universal Extractor supports internationalization.  If you're interested in translating Universal Extractor into another language, please download the source archive and follow the instructions in English.ini.  Please send me your completed translation and I'll include it in the next version of Universal Extractor.  Thanks to all of the contributors!

To use these language files, simply download and copy into the lang\ directory of your Universal Extractor installation.  The new language will appear as an option the next time you run UniExtract.

Language File Native Name Contributer Added
Chinese (Simplified)* 北方话 Huang Junwei 11/28/2006
Chinese (Traditional)* 正體字/繁體字 Huang Junwei 11/21/2006
English* English Default/native language file 12/06/2005
French* Français jacklours 11/21/2006
German* Deutsch Arno Krumpholz 11/21/2006
Hungarian Magyar Simon László 03/25/2007
Italian* Italiano TJL73 11/28/2006
Japanese* 日本語 Yachuko Nakai 11/28/2006
Korean 한국어/조선말 Sunsuk Kim 03/21/2007
Polish* Język Polski ULTIMA PRIME 02/22/2007
Portuguese Português José Gonçalves 03/01/2007
Portuguese (Brazilian) Português ZimzuM 03/21/2007
Romanian Limba Română Cristian Stefan 02/27/2007
Russian* Русский язык Polarbond 02/22/2007
Slovak* Slovenčina Peter Žilák 02/22/2007
Spanish* Español Leonardo Mauro 02/22/2007
Thai* ภาษาไทย Pruthisith (Terry) Prateepavanich 11/28/2006
Turkish Türkçe Onur AYDIN 03/01/2007
Valencian (Catalan) Valencià (Català) Rafel Hidalgo i Rangel 03/25/2007
Vietnamese* Tiếng Việt Nguyen Nhat Quang 02/22/2007

* = Included in current release

Return to top

Installation and Usage

To install UniExtract, download the installer and run it on your system.  You will have a few options during installation:

Set Program Options - These options adjust the default Universal Extractor behavior.  They can be changed after installation by modifying UniExtract.ini in the installation directory.

  • Default Language - specifies the language used by UniExtract
  • Debug File Location - specifies the directory to which UniExtract should write its debug file
  • Append missing file extensions - attempt to determine and append the correct extension for improperly named files using TrID
  • Maintain archive history - maintain a list of the ten most recent files that were extracted, as well as the destination directories
  • Remove duplicate files - attempt to detect and remove duplicate that may have been created during extraction
  • Remove temporary files - automatically remove temporary files that may be created during extraction

Select Additional Tasks - These options specify additional actions that can be performed by the installer.  They only affects installation of Universal Extractor, and cannot be modified later.

  • Enable Explorer context menu integration - allows you to right click on any archive and directly extract its files
    • Add UniExtract Files... to context menu - adds ability to specify destination directory
    • Add UniExtract Here to context menu - adds ability to quickly extract to current directory
    • Add UniExtract to Subdir to context menu - adds ability to quickly extract to subdirectory
    • Force association with with all supported archive formats - Forces UniExtract to associate itself with all supported file extensions; by default, it will only associate itself with native Windows formats (.exe, .msi, etc.) and other formats not currently associated with another program
  • Add Universal Extractor to your system path - allows you to run UniExtract (and any related binaries) from the command line
  • Create a Start Menu icon - add a shortcut for Universal Extractor to your Start Menu
  • Create a desktop icon - add a shortcut for Universal Extractor to your desktop
  • Create a Quick Launch icon - add a shortcut for Universal Extractor to your Quick Launch bar

If you wish to automate installation (for custom or unattended installs), please run uniextract13.exe /? to get a detailed description of available command-line options for the installer.

For manual installation with the binary archive, simply extract the files to the destination folder you would like.

Once UniExtract is installed, usage is simple.  The easiest way, if you used the installer and enabled context menu integration, is to right-click on any archive and select click one of the UniExtract options.  UniExtract Here will extract files to the current directory, UniExtract to Subdir will extract files to a subdirectory named after the file, and UniExtract Files will prompt you for the destination directory.

If you did not enable context menu integration, you may run the Universal Extractor start menu shortcut, or double-click directly on UniExtract.exe.  This will launch the UniExtract GUI.  Enter (or use the file browser to select) the file you wish to extract and the destination directory, then click OK.

You can use Add/Remove Programs to uninstall UniExtract, or just delete the directory if you used the self-extracting archive.

Return to top

Technical Details

When a file is passed to UniExtract, it begins by scanning the file with TrID.  If the file format matches one of the supported non-executable formats listed below, it immediately begins extraction from the archive.  If it's an executable file, it calls PEiD to analyze the file signature.  If the signature indicates that it's a supported format, then it attempts to begin extraction.  If it is not a recognized signature, it will try running it through 7-Zip and UnZip as default cases.  If 7-Zip or UnZip recognizes it, it will be extracted; otherwise, UniExtract displays an error message and exits.

Note: Filetype scanning with TrID is new as of v1.5.  Older versions relied on the file extension to identify the filetype.  This behavior is still used if the TrID scan cannot determine the filetype.

If the filetype is supported, UniExtract begins by checking for a valid destination directory and recording the directory size.  If necessary, a new directory will be created (with a directory size of zero).  UniExtract then spawns a shell and calls the supporting binary to begin extracting files from the selected archive to the destination directory.  After completion, UniExtract checks the size of the subdirectory to determine if extraction was successful; if the size is greater than the initial size, UniExtract assumes success and exits.  If extraction fails, UniExtract notifies the user and leaves log file in c:\uniextract.log that (should) contain any error messages.

The c:\uniextract.log file is created during the extraction process by the tee program.  Essentially, all output from the running binary is redirected to tee, which in turn writes the output to the log file as well as echo it to the screen to give the user current progress.  Upon successful execution this file is deleted, but if an error is detected it is left alone for the user to review.  Note: As of v1.4, the location of uniextract.log can be changed to any user-specified directory.

Return to top

Supported Formats

As of v1.5, UniExtract uses TrID to determine the filetype of any given file.  If this detection fails, file extensions are used as a backup identifier.  The table below is a reference of known-supported filetypes and common extensions; any supported archive types should work regardless of actual extension.

Archive Type Common File Extension(s)
7-zip archive .7z, .exe
ACE archive .ace
ARC archive .arc
ARJ archive .arj, .exe
ASpack compressed file .exe
BIN/CUE CD-ROM image .bin, .cue
bzip2 archive .bz2, .tbz2, .tar.bz2
CPIO compressed file .cpio
Debian package .deb
Encoded files .b64, .uu, .uue, .xx, .xxe, .yenc, .ntx
Gentee package .exe
gzip archive .gz, .tgz, .tar.gz
IMG floppy disk image .img
Inno Setup package .exe
Installer VISE package .exe
InstallShield Cabinet archive .cab, .1, .lib
InstallShield package .exe
ISO CD-ROM image .iso
KGB archive .kgb, kge, .exe
LZH compressed file .lzh, .lha
LZW compressed file .Z, .tz, .tar.Z
LZO compressed file .lzo
MHTML file .mht
Microsoft Cabinet archive .cab, .exe, .imf
Microsoft Compiled Help file .chm
Microsoft compressed file .??_
Microsoft LIT e-book .lit
Microsoft Windows Help file .hlp
NSIS package .exe
Outlook Express mail archive .dbx
PEA archive .pea
RAR archive .rar, .001, .exe
RPM package .rpm
SetupFactory package .exe
SIS (SymbianOS) packages .sis
StuffIt packages .sit
TAR archive .tar, .tbz2, .tgz, .tz, .tar.bz2, .tar.gz, .tar.z
UHARC archive .uha
UPX compressed file .exe, .dll
Windows Installer package .msi
Windows Installer patch .msp
Wise Installer package .exe
ZIP archive .zip, .jar, .xpi, .wz, .exe
Zoo archive .zoo

Return to top

Credits

Universal Extractor relies heavily on other programs, and would not be possible without the incredible generosity of the Free Software community.  This is a list of all of the applications that are used by Universal Extractor:

  • 7-Zip (Igor Pavlov, Open Source) - Excellent general purpose Windows archive utility; used to extract .7z, 7-Zip SFX .exe, .bz2, .cab, .chm, .cpio, .deb, .gz, .iso, .lha, .lzh, NSIS installer .exe, .rpm, .tar, and .Z files
  • ARC (Howard Chu, Open Source) - ARC archiving utility; used to extract .arc files; Note: binary was obtained from http://gnuwin32.sourceforge.net/packages/arc.htm
  • AspackDie (yoda, Open Source) - Unpacker for ASPack-compressed files; used to unpack .exe files with ASpack compression
  • AutoIt (Jonathan Bennett, Open Source) - General-purpose Windows scripting language; used to write the UniExtract front-end
  • bin2iso (Bob Doiron, Open Source) - Utility to convert BIN/CUE CD-ROM images to ISO images; used in conjunction with 7-Zip to extract .bin/.cue images
  • Barebones Ooz (Booz) - (Rahul Dhesi, Open Source) - Zoo archive extractor/lister; used for extracting .zoo files
  • cmdTotal (Adam Blaszczyk, Open Source) - CLI frontend for Total Commander plugins; enables support for the following plugins used by Universal Extractor:
    • DBX (Dmitri R. Letichevski, Freeware) - extracts Outlook Express mail archives
    • InstallExplorer (Domo, Freeware) - Total Commander port of the InstallExplorer plugin for FAR by Sergei Wanin; extracts Gentee, Inno Setup, Installer VISE, InstallShield, NSIS, SetupFactory, and Wise Installer packages
    • MHT Unpacker (Ariel Perez, Freeware) - extracts MHTML files
    • MSI (Alex Gretha, Freeware) - extracts Windows Installer package (MSI) and patch (MSO) files
    • PDunSIS (Patrik Daranský, Freeware) - extracts SIS (SymbianOS) packages
  • Convert LIT (Dan A. Jackson, Open Source) - Converter for Microsoft Reader format e-books; used extract contents from .lit files
  • Crystal SVG (Everaldo Coelho, Free) - Collection of extremely high-quality icons for Linux/KDE; used as the source graphics for the UniExtract icon
  • E_WISE (Veit Kannegieser, Open Source) - Wise Installer decompiler; used for extracting files from Wise Installer packages
  • extract (Gilles Vollant, Freeware) - Floppy disk image extraction utility; used to extract files from .img images
  • ExtractMHT (Jared Breland, Open Source) - Splitter and base64 decoder for MHTML files; used to extract .mht files
  • GIMP (Spencer Kimball and Peter Mattis, Open Source) - The GNU Image Manipulation Program; used to create the icons used by UniExtract
  • HelpDeco (Manfred Winterhoff, Freeware) - Decompiler for Windows Help files; used to extract/reconstruct .hlp files
  • i3comp (Stirling Technologies, Freeware) - InstallShield 3.x Compression and Maintenance utility; used for extracting files from InstallShield 3.x installer packages; can be download as part of WinPack
  • i5comp (fOSSiL, Open Source) - InstallShield 5.x Compression and Maintenance utility; used for extracting files from InstallShield 5.x installer packages
  • i6comp (Morlac, Open Source) - InstallShield 6.x Compression and Maintenance utility; used for extracting files from InstallShield 6.x installer packages
  • Info-ZIP UnZip (Info-ZIP, Open Source) - Highly portable ZIP archive utility; used for extracting .zip and ZIP SFX .exe files
  • Inno Setup (Jordan Russell, Open Source) - Open Source packaging application for Windows; used to create the UniExtract installer
  • Innounp (QuickeneR, Open Source) - Inno Setup Unpacker; used for extracting files from Inno Setup installer packages
  • IsXunpack (Pit0n and SkYuS//vN, Freeware) - InstallShield Unpacker; used for extracting files from modern InstallShield installer packages
  • KGB (Thomasz Pawlak, Freeware) - KGB archiver; used to extract .kgb, .kge, and KGB SFX files
  • lzop (Markus F.X.J. Oberhumer, Open Source) - LZO file compression utility; used to extract .lzo files
  • msi2xml (Daniel Gehriger, Open Source) - Windows Installer packaging utilities; used to extract files from .msi files
  • Open-source ARJ (ARJ Software Russia, Open Source) - Open Source implementation of the ARJ archiving utility; used to extract .arj and ARJ SFX .exe files
  • PeaZip (Giorgio Tani, Open Source) - PeaZip archiver; used to extract Pea archives
  • PEiD (Jibz, Qwerton, snaker, and xineohP, Freeware) - Portable Executable File Identifier; used to analyze .exe file signature to determine the filetype and whether or not it's a supported archive; includes Bob's external signature database
  • StuffIt Expander 6.0 (Aladdin Systems, Freeware) - StuffIt file decompressor; used for extracting .sit files
  • StIX (Veit Kannegieser, Freeware) - Decompressor for InstallShield 3.x archives and installers; used to extract InstallShield 3.x archives (.1, .lib) and SFX installers (.exe)
  • tee (Free Software Foundation, Open Source) - Shell utility that redirects standard input to multiple outputs; used to write messages to a log file while also displaying current progress; Windows binary was obtained from http://unxutils.sourceforge.net/
  • TrID (Marco Pontello, Freeware) - Utility designed to identify file types from their binary signatures; used to determine the type of file passed for extraction
  • UnRAR (Alexander L. Roshal, Freeware) - Command-line utility for RAR archives; used to extract .rar and RAR SFX .exe files
  • UnUHARC (Uwe Herklotz, Freeware) - Command-line utility for UHARC archives; used to extract .uha files; Previous versions of UHARC can be downloaded from http://www.klaimsoft.com/forum/index.php?showtopic=25
  • UPX (Markus Oberhumer, Laszlo Molnar & John Reiser, Open Source) - Compression utility for PE files; used to unpack .exe and .dll files with UPX compression
  • UUDeview (Frank Pilhofer, Open Source) - Encoded file decoder; used to decode Base64, UUencoded, XXencoded, and yEnc files
  • WUN (Jägermeister Markus, Icebird, Open Source) - Wise-Setup Unpacker; used for extracting files from Wise Installer packages (updated version of HWUN)
  • XAce (Marcel Lemke, Freeware) - ACE archive utility; used for extracting .ace and ACE SFX .exe files

Return to top