I've emailed Jared (aka nitro322) for permission to release this here and he has very generously agreed, so please be sure to give him a big thanks for all the hard work he put into this program cos we couldn't do what we do here without peeps like him who support our efforts with such invaluable tools.
My latest (1.5) build of this (and sorry it is soooooooooooo long overdue cos it required a total rebuild) is now fully uninstallable, and as I did with my previous builds I have customised this with a shell menu to suit my own personal work flow - which is obviously geared up to addon building and the dissecting of installer packages etc etc. Also, as in my previous build, I have NOT associated any archive formats with UniExtractor because I want my archive formats to only open-on-click with my primary archiving software (WinRAR and 7-Zip), but you will be able to "UniExtract to Sub-Folder" al files that are supported by the program
If you are going to use this (my personalised version) of this addon, then you need to understand that if you reconfig the program in any way that modifies my original file/shell menu associations then you will NOT get a clean registry uninstall of this. If that doesn't suit you, then Makave2345 has a switchless installer version with default program setup and ricktendo64 also maintains a vanilla addon
Universal Extractor v1.5
SIZE: 4.55 MB
Description: Extract files from any type of archive or installer
Op System: Windows 2000, XP & 2003 (x86 only)
License: Open Source
Installs to: "%programfiles%\Utilities\UniExtractor"
Uninstaller: Removes program files, shortcuts, reg entries and shell menu
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), abut 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.
When a file is passed to UniExtract, it begins by examining the file extension. If the extension matches one of the supported non-executable extensions listed below, it immediately begins extraction from the archive. If it's an executable file (determined by an .exe extension), 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 7zip as a default case. If 7zip recognizes it, it will be extracted; otherwise, UniExtract displays an error message and exits.
If the filetype is supported, UniExtract begins by checking the destination directory. If necessary, a new directory will be created. 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 zero, 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. Note: As of version 1.0, this check is only valid for new directories. If you choose to extract to an existing directory, it will always "pass" this check.
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.
[Edit 2006/04/11] Minor update to pack to tidy up the shell menu entries.
[Edit 2006/04/24] Bumped to version v1.1 and updated MD5 sums.
[Edit 2006/05/04] Bumped to version v1.2 and updated MD5 sums.
[Edit 2006/05/04] Bumped to version (again) to v1.2.1 and updated MD5 sums.
[Edit 2006/05/14] Forgot to update line in reg entries to the new Uniextract icon. Fixed and updated MD5 sums.
[Edit 2007/07/01] Updated to version v1.5, rebuilt entirely from scratch, refined reg entries, coded an uninstaller
[Edit 2007/07/02] Minor tweak to inf file to standardise my uninstallation code. Change of addon naming convention
[Edit 2007/07/05] Rewrote uninstaller to add a removal prompt
[Edit 2007/07/06] Minor bug fix to hide taskkill CMD window during removal. Big thanks to Kel for the tweak.
[Edit 2007/08/04] Rebuilt optional components section and updated uninstaller to work with XP Home
[Edit 2007/08/25] Tweaked uninstall reg entries to force a proper icon to display in Add/Remove programs