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]: Row Validation[Next]: MAKEMSI.FLT
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
\->Building or Updating MSIs->Validations->MSI Validation

MSI Validation

Unlike table row based validations, MSI validation occurs after all changes have been completed and looks at the database's consistency as a whole (not individual records in relative isolation).

It can report where guidelines have not been followed as well as many types of problems which are known to cause issues for MSI installation or uninstallation.

MAKEMSI uses "MSIVAL2" for its automated validation step but these other tools also perform MSI validation:

The validation step can take some time, if you are confident that it won't pick up problems then from experience I know that you can kick off an install of an MSI while it is being validated to save time.

Assuming MAKEMSI is correctly configured to run "MSIVAL2" (see "Installing MAKEMSI") and that there are no problems with the MSI you should see something similar to the following lines near the end of your build:

(@889)INFO: Validating the MSI (please wait)...
(@889)INFO: Using: "C:\Program Files\MSIVAL2\darice.cub"
(@889)INFO: Filtering validation results...

(@889)INFO: ====================
(@889)INFO: === VALIDATED OK ===
(@889)INFO: ====================

Not all generated "warning" (or even in some instances "error") messages will make sense in all cases (and some are basically wrong) so there is a need to filter the results. If after filtering there are no messages containing the words "ERROR" or "WARNING" the validation has succeeded. See the "ICE Messages" section for some details above some specific messages and their resolution.

I do not recommend the release of any MSI that has not been validated, also do not simply ignore validation messages, filter out any "expected messages" (ones you have decided you can safely ignore) to end up with an "OK" result! If you do this you will not miss a "real" issue hidden amoungst the ones you are used to ignoring!

There is a basic set of validations provided by the "MAKEMSI.FLT" file (installed by MAKEMSI) and the the "MsiValFilter" command provides an another alternative method for specifying filter lines.

To create your own validations (perhaps to check against company standards) have a look at the "ICE Validations" section.

Also have a look at the "Row Validation" section, this can pick up a lot of errors at the time they are made rather than looking for them after the complete MSI is built (which could be a slow process for a large MSI).

Warning

Keep in mind when validating databases (particularly when from other sources) that the "_Validation" table in the database is used a lot as a source of "rules".

If you get a validation message you believe is wrong you may wish to check this table to see if the relevant entries are correct.

MAIN MAKEMSI VALIDATION OPTIONS

#define? VALID_MISVAL2_EXECUTED_CMD                  validate-execute.cmd
#define? VALID_MISVAL2_EXECUTED_CMD_FILTER           validate-filter.cmd
#define? VALID_MISVAL2_OUTPUT_CMD                    msival2-redirected.txt
#define? VALID_MISVAL2_OUTPUT_ALL                    all-unicode.txt
#define? VALID_MISVAL2_OUTPUT_ALL_ANSI               all-ansi.txt
#define? VALID_MISVAL2_OUTPUT_FILTER                 FilterCommands.flt.txt
#define? VALID_MISVAL2_OUTPUT_FILTERED               FilteredLog.TXT
#define? VALID_MISVAL2_OUTPUT_FILTERS_USED           FiltersUsed.TXT
#define? VALID_FILTER_FILE                           MakeMsi.FLT
#define? VALID_FILTER_BEFORE_FILE_INCLUSION
#define? VALID_FILTER_AFTER_FILE_INCLUSION
#define? VALID_DIE_ON_VALIDATION_ERRORS_OR_WARNINGS  Y
#define? VALID_HTMLRPT_IGNORE_FILTER_TRUE            <$HTML_SYMBOL_TICK>
#define? VALID_HTMLRPT_IGNORE_FILTER_FALSE           <b><$HTML_SYMBOL_CROSS></b>
#define? VALID_HTMLRPT_NO_MATCHES_TEXT               <span STYLE="color:grey;font-size:5pt" title="No ICE messages matching this filter were found"><b><center>&#x2717;</center></b></span>
#define? VALID_HTMLRPT_COMMENT_DEFAULT               <span STYLE="color:grey;font-size:xx-small">*** NO REASON PROVIDED FOR THIS FILTER ***</span>

;--- If HTML put into MSI we won't yet have the info (what do we want to see) ---
#define? VALID_HTMLRPT_VAL_NOT_DONE_YET_TEXT    <small>MSI Validation hasn't occurred yet!</small>
#define? VALID_HTMLRPT_PLACEHOLDER_S            <PlaceHolderFilter.
#define? VALID_HTMLRPT_PLACEHOLDER_E            <?Space>/><$VALID_HTMLRPT_VAL_NOT_DONE_YET_TEXT $$Sqx2>
#define? VALID_HTMLRPT_PLACEHOLDER_SUMMARY      <PlaceHolderSummary><$VALID_HTMLRPT_VAL_NOT_DONE_YET_TEXT $$Sqx2></PlaceHolderSummary>
#define? VALID_HTMLRPT_PLACEHOLDER_ERRORS       <PlaceHolderErrors  />


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]: Row Validation[Next]: MAKEMSI.FLT


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.