\TroubleshootingBugs, Features and Issues (NON-MAKEMSI)MAKECAB.EXE Issues
The MS "MakeCab.EXE" tool has multiple bugs
(basically a piece of crap).
Some known bugs:
- It cab produce cabs which exceed well understood limitations
(as documented by Microsostft's Windows Installer team):
- Multi-part CABs can get the total size of a set of files past 2GB,
possibly to 64K * 2GB, but no one file can exceed 2GB.
- Maximum size of all files in one folder (uncompressed) 2GB
- Maximum size of all files in one folder (compressed) 2GB
- Maximum size of a CAB file (compressed) 2GB
- Maximum number of files in a single CAB 64K
- Unless you use the "/date" and "/time" options in the DDF file,
MAKEMCAB may (under unknown conditions) use the wrong date and/or
time on the compressed file!
My workaround is to always tell it which dates/times to use.
- If MAKECAB reports an error the real line number will probably be
one greater than that reported.
- A file in use (such as an Excel spreadsheet) can not be compressed
and MAKECAB.EXE will simply report that the file could not be
opened (no explanation).
See the "Files In Use - ADD" section for an example
which works around files on a share which may be in use by others.
- There is a line limit on all lines in the ".DDF" file, I'm not
sure what the limit is but it includes all lines (yes even comments).
For this reason MAKEMSI uses "short" filenames and tries to use
relative paths (to the current directory) where possible
to specify the files as this will greatly reduce the chance
of a line being too long for "MAKECAB" to handle.
If it fails due to a line being too long it will report "ERROR:"
in "Pass 1" (another bug - message missing).
You can further reduce the line length by changing the
source directory to a shorter one or using a shorter file
Another possibility is to use a "subst" command to map a
drive letter to the source path.
- I can't remember the exact value but if a filename is longer
than about 60 characters (no I'm not joking) the tool carks it.
Workaround is to convert the whole filename to 8.3 format and then
convert to a relative filename where possible.
- You can't specify the full directory name for the cab files destination,
the path must be relative, otherwise you will get a cryptic error as shown here:
Of course the error message itself is a separate bug as there
is no invalid parameter.
- Be sure to have a look at the
"Cabinet File Size Limitations" section.