I thought I'd give a little update about the current state of Windows CE software archiving tools. My long-term project is to categorize thousands of Software title and properly preserve them for the future.
The software comes in many flavors, for example:
Windows Installers
(Installshield or others, some can be extracted to get to the CE cab files, some can't
)
Windows CE CAB files
Windows CE PE
(.exe
) files
Often these files come with little extra information, so I'd like to introduce some tools that are useful for automating extracting info and sorting
UnShield
https://github.com/twogood/unshield
This CLI tool can extract files from InstallShield installers
7-Zip
https://www.7-zip.org/
This tool can extract zip files obviously and also self-extracting zip files and some installers
cabextract
https://www.cabextract.org.uk/
This CLI tool can extract .CAB files
windows-ce-cab-info
https://github.com/HPC-Factor/windows-ce-cab-info
This tool extracts information from a Windows CE cabinet header file. It includes information like compatible architecture, publisher name, program title, device type, etc.
windows-ce-pe-info
https://github.com/HPC-Factor/windows-ce-pe-info
This tool analyzes a Windows CE PE file and gives various info including compatible processor, CE version, and - if present - version information such as program name and version number
strings
This tool - included in most Linux distributions - can extract strings from Windows CE PE files, when set to utf16le
Using all these tools it's possible to create tools that extract lots of information from files.
An example:
We have a file called
setup.exe.
Run it through
unshield, we get a
.cab file.
Run that through
windows-ce-cab-info and get publisher, title and architecture
Extract the cab file using
cabextract and get the
.exe file out
Analyze the
.exe file using
windows-ce-pe-info and get architecture, program name, version number
Analyze the
.exe file using
strings and get further information, like website url or version number
(if not included in the StringFileInfo section of the .exe
)