MAKEMSI quickly and reliably creates MSI files in a non-programmatic way
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
[Bottom][Contents][Prev]: Missing _Validation Table Entries[Next]: (un)Installation Time Problems
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
\->Troubleshooting->Build Time Problems->Build Steps

Build 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 a problem.

There are lots of options which may affect the steps mentioned below, however the main steps are:

  1. 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 "commands" available.

    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).

  2. Load Headers
    Most of the MAKEMSI files (.mmh) are loaded at this time. At this time any version file is also loaded.

  3. 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.

  4. 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 it's manual.

  5. 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.

  6. 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 diagnostic shortcuts!

    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.

  7. 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).

  8. 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.

  9. MSI Validated
    The MSI is validated and any messages you don't want are filtered out. There are a number of ways you can control or disable filtering of validation messages. The following tools are required:

  10. 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.

  11. Platform Directory Tree Updated
    If you have enabled "platform definition" updating then this is done.


Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.Please email me any feedback, additional information or corrections.
See this page online (look for updates)

[Top][Contents][Prev]: Missing _Validation Table Entries[Next]: (un)Installation Time Problems


MAKEMSI© is (C)opyright Dennis Bareis 2003-2008 (All rights reserved).
Saturday May 28 2022 at 3:11pm
Visit MAKEMSI's Home Page
Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.