NOTICE: PEBundle has not been distributed in many years.
PEBundle is a revolutionary tool that allows for DLLs or other files to be 'bundled' with an executable, therefore removing the requirement to distribute the bundled files separately from the application. With two operational modes, one that uses advanced techniques to resolve dependencies on a bundled DLL in memory, and another that writes the bundled file(s) to disk, PEBundle is a great tool to optimize software distributions.
PEBundle Features:
Effective static linking of a dynamic link library.
Makes applications and the bundled modules more difficult to reverse engineer and/or tamper with.
Helps to hide and protect the bundled modules.
Bundling of modules the application is dependent on allows for the application to be distributed as a single executable that is capable of installing modules it needs on the fly.
Reduces Dynamic Link Library version problems, a.k.a. "DLL Hell". This problem is described by Microsoft in MSDN and they actually recommend that applications have their own copies of DLLs so that they will not cause version problems when they overwrite the system copy of the module.
Supports bundling of scripts to their respective interpreters and auto-launching.
Works with PECompact, so that your applications and all the modules may be compressed significantly. The write-to-disk module does have internal support for compression of the bundled modules.
Full support for Windows 95/98/Me/NT/2k/XP. The advanced bundle does hook and support wide character, Unicode, APIs.
OVERVIEW OF IN-MEMORY BUNDLING BY PEBUNDLE:
This mode, called the "Advanced Bundle" in the GUI, allows dynamic link libraries to be bundled with an executable and have all references to those modules resolved at runtime to the appropriate memory addresses without ever writing the dynamic link libraries to disk*. The dependencies are resolved through the use of API hooks by the PEBundle loader, which is attached to the application.
* Under the Win9x kernel, for dynamic link libraries that contain resources, a 'stub' DLL of less than 4k in size may be written to the disk in order to 'trick' Windows resource APIs so that they are able to locate the module correctly. The WindowsNT kernel does not require this, resources work fine using pseudo-module handles defined by PEBundle. Dynamic Link Libraries that do not contain resources will not have this stub written to disk. This stub is created in the system temporary directory and is deleted when the application is closed.
OVERVIEW OF "WRITE-TO-DISK" BUNDLING:
In this mode, PEBundle simply uncompressed and extracts the
modules to disk at runtime. This mode supports the bundling of any type of file.
The modules may be extracted to a location the user specifies at the time of bundle, and can optionally only be extracted if the module or a newer version of it does not already exist.