\TroubleshootingBuild Time ProblemsBuild Steps
The section describes the basic steps which occur when an
MSI is built.
This may help you to understand what is occuring or possibly help diagnose
There are lots of options which may affect the steps mentioned
below, however the main steps are:
- PPWIZARD was invoked
You kicked off the build via the command line or explorer.
Either way you chose the ".MM" file to be processed.
The script will request MAKEMSI headers be loaded to make the
You may set some MAKEMSI options prior to loading the headers to
alter how it functions or to modify default values (on the
"PPWIZARD" command line).
- Load Headers
Most of the MAKEMSI files (.mmh) are loaded at this time.
At this time any
version file is also loaded.
- Process your ".MM" file
You will now use MAKEMSI "commands".
One of the first would normally be "MSI" which
begins the generation of any VBSCRIPT (the command can only be
used once and note that the "company.mmh" header
does this on your behalf).
Note that you will probably either have an "MSI" template
(the "company.mmh" header uses "uisample.msi")
or build the "base" from scratch.
Most MAKEMSI commands used will generate VBSCRIPT and you may
also imbed your own VBSCRIPT code.
This code when executed ("pass 1") will perform the desired
manipulations of the MSI.
So just to make this plain, most commands are executed in
2 parts, the part that decides what needs doing (creating script)
and when that sccript is executed later in pass 1.
- MAKEMSI Commands are PPWIZARD Macros
MAKEMSI commands are "PPWIZARD" macros, so for more information
on how to specify parameters or if you wish to create your own, see
- VBSCRIPT Validated (happens for both passes)
The generated script (contains logic for both passes)
is syntax checked before trying to execute it.
Its possible for certain types of user errors to cause
non VBSCRIPT to have been imbedded, any syntax error is very
likely to be some sort of user error.
- PASS #1 - VBSCRIPT Executed to Build or Update MSI
The VBSCRIPT is executed to process the "requests" you have made.
Almost all of the work is done in this step.
The script will return some information which MAKEMSI will merge
into its HTML report.
If this step fails in a unexplained way then try the
At the end of "pass 1" if you have added files to the MSI
that haven't yet been compiled then a compile takes place.
If you added merge modules which haven't yet been compiles
(a "late" merge) then a merge takes place at this time also.
- HTML Report is Created
Unless you prevent it MAKEMSI will create a HTML report.
This HTML report has a "validate files" button
which will check the installed files against what is expected
(it currently has some restrictions).
- PASS #2 - HTML Report is Added to the MSI
If requested, the HTML report is added to the MSI
so that a particular directory tree is populated with
information about all installed products which were
created by MAKEMSI.
It will also update the add-remove "support information"
such that clicking on the "readme" information will display
the HTML report.
If you are adding the report to the MSI then a second pass
("pass 2") will be performed to generate code to add the file and
to perform the required compile.
- MSI Validated
The MSI is validated and any messages you don't want are filtered
There are a number of ways you can control or disable filtering of
The following tools are required:
- Samples Directory Updated
If you have enabled
"sample collection" then
all script related files are copied to one common directory, this would
be on a network share in a multi user environment.
- Platform Directory Tree Updated
If you have enabled "platform definition"
updating then this is done.