Jsmsix Readme
Jsmsix Readme
_________________________________________________________
Introduction:
_________________________________________________________
This version may also be the easiest for people using Linux.
It has minimal dependencies and is easy to use.
_________________________________________________________
Requirements:
_________________________________________________________
File restrictions:
Later Windows versions may present obstacles in connection with
file restrictions. You may need to give yourself "permission" in some
cases. On the bright side, the JSWare unpackers are not limited
by Windows Installer "Administrative installation", which is the
unpacking method used by some MSI unpackers. An Administrative
installation is very simple to do. It's a function offered by many
MSI files. But it is only a partial unpacking and can only be done
by an Administrator. Administrative installation is designed to
unpack specific files for install from a network in business settings.
Actual unpacking of an MSI unpacks the whole thing and does
not require any special permissions.
_________________________________________________________
How to use jsMSIx.exe:
_________________________________________________________
Click "Unpack MSI file" to fully unpack the MSI or MSM and write
a log file documenting the files and Registry settings.
_________________________________________________________
Other MSI Unpacking options:
_________________________________________________________
In addition to jsMSIx there are three script options, which are less
polished but more flexible -- for people who might want to customize
the tools.
jsMSIx.exe and the three options listed above all unpack an MSI in
basically the same way. They create folders to mirror the folder
structure used when the software is actually installed. They then
unpack the MSI files into their respective folders. They also write
an extensive log file that details all files in the package and lists Registry
settings that will be made when the MSI installation is run.
_________________________________________________________
Explanation of folder paths:
_________________________________________________________
_________________________________________________________
Explanation of Registry settings:
_________________________________________________________
Path�Value�Type
Example: HKCU\Software\AceAndAcme\Settings\Theme�Traditional�SZ
_________________________________________________________
Troubleshooting:
_________________________________________________________
* File locations:
Make sure any external CAB files that go with the MSI file to
be unpacked are in the same folder with the MSI file.
* Long paths:
Note that some MSI files are put inside EXE files. jsMSIx.exe can
unpack those MSIs, but they must first be extracted from the
EXE. Usually a good way is to open the TEMP folder, run the installer
EXE, fish the MSI out of TEMP, then cancel the install.
_________________________________________________________
Over the past few years, 3 fixes were required to handle problems
with faulty Directory tables in MSIs. (The Directory Table stores the
paths of folders in a program, so parsing it is required for unpacking
an installer's files into their destination folders.)
The Directory Table is very complex, often with numerous "dummy"
entries. (For example, the MSI for Adobe Flash is merely a container
for the EXE version of the installer. Yet the Flash MSI lists 11 folder
paths in its Directory Table!)
Faulty records in the Directory Table are not uncommon, even in
Microsoft installers. (See details in update listing below.) In an effort
to avoid future problems, this update involves a complete rewrite of
the code for parsing the Directory Table.
A very minor update adding a menu for convenience and a small bugfix:
In some situations copying Registry settings to the Clipboard was
not working.
____________________ Update January, 2013 ________
This is a minor update to deal with faulty MSIs. In rare cases the MSI
unpackers here may have trouble with a particular MSI due to its being
faulty. This update follows the discovery of such an MSI.
The technical explanation:
The MSI documentation states that the MSI Directory table, listing folders
in the install, has 3 columns:
The docs further state that there can be only 1 root folder. That folder has
Directory property set to TARGETDIR and DefaultDir set to SourceDir. If
there is no TARGETDIR then the ROOTDRIVE property is used. The docs also
state that if the Directory_Parent property is the same as Directory, or if it
is blank, then that entry represents the root folder. Up until now we were
only aware of 1 case of a faulty MSI Directory table. It had two TARGETDIR
entries and, oddly enough, was authored by a very well-known Microsoft MVP.
More recently a second case has turned up, this time from Microsoft themselves.
The file name is NetworkMonitor_Parsers.msi. It comes packed inside the Network
MS Monitor software download. In NetworkMonitor_Parsers.msi Directory table
there is the following:
TARGETDIR is a keyword that should denote the root folder but it is not the root
folder. "TARGETDIR" was just used as the alphanumeric ID of one of the folders! The
root folder was named Base. Without figuring out the root folder name, unpacking
ends up being partial at best, so this problem needed to be dealt with.
The update involves a rewrite of the function -- in all of the unpackers -- that
performs the job of sorting out installation folder paths. The new versions will
look for a valid entry that has "SourceDir" in the 3rd column, with a 2nd column
that is either blank or matches the first column. Only if no such match is found
will it then check for entries with TARGETDIR or ROOTDRIVE in the first column.
____________________________________________
__________________ Update 11-29-2010 _________
A minor update that allows for unpacking MSIs where there are
multiple CAB files with spanning. (Where 1 stored file is stored across
2 CAB files.)
____________________________________________
This is a minor, single bug fix. There was a typo in the code
that could cause a crash in some cases when clicking "Get MSI Info."
That was fixed.
_________________________________________________________
License:
You use all script code and components from JSWare at your own risk.
The components (compiled DLL and EXE files) may be used for personal or
commercial purposes. No payment or attribution is required for either use.
The components may be redistributed if they are required as support files
for scripts or software that you have written.
Also, the script code may be used freely, in part or as whole scripts,
for any purpose, personal or commercial, without payment or attribution.
I ask only that you not redistribute these scripts and components, except
as required for your direct use. Instead, please direct others to obtain copies
of JSWare scripts and components directly from www.jsware.net.
Also, none of the code here may be redistributed under another license. If a
work using code from JSWare is distributed with restrictions of any kind
the code from JSWare must be kept exempt from those restrictions.
This includes, but is not limited to, code sold for profit, code with usage
restrictions
and code distributed as so-called "Open Source" with redistribution restrictions.
Joe Priestley
JSWare
www.jsware.net
[email protected]