Merge Fails with Error Message(s) |
Unlike the "merge succeeds but heaps of validation errors produced" issue the build actually fails to complete due to some fatal merge issue.
You can user the "IgnoreErrors" parameter of the "MergeModule" command to ignore most errors that are likely to prevent a merge. When a merge module is merged there are a number of different types of errors that can occur. A huge number of these can safely be ignored while some definately shouldn't be.
This parameter only affects those merge errors which immediately cause processing to abort, if processing completes up to the MSI validation step then you may wish to use the "MsiValFilter" command to filter out any messages you decide to ignore, others may be listed in the "ICE Messages" section.
With this option you can specify one or more space delimitered items which describe what can be safely ignored. Each item should be in one of the following formats (in most to least recommended order):
Some errors can occur in the MSI and sometimes the merge module, if you want to be specific then pass the "Database:" bit which should be exactly "DataBase:" or "MergeMod:".
All "_Validation" table entries are safe to ignore. A frequent bug in merge modules causes merge errors with the "Directory" table table ("SystemFolder" etc). All I have seen so far can be safely ignored.
You could perhaps try merging the merge module with "ORCA" to see if it reports any issues, if it doesn't then a reasonable assumption would be that it is safe to ignore the errors.
Entries provided which match merge errors are displayed in the HTML report. The merge log file also contains heaps of details including all merge issues (whether ignored or not).
The value from this parameter is added to that contained in the macro "MERGEMOD_IGNORE_ERRORS_ALWAYS". Clear this macro if you wish full control.
Example Error - SystemFolder |
Incorrectly authored merge modules (for example most MS ones like "atl.msm"...) will cause merge errors similar to the following:
Merge Errors - Use the "IgnoreErrors" parameter to ignore any ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Type : msmErrorTableMerge Ignore It? : NO DataBaseTable: Directory DataBase Keys: SystemFolder
This is because the "Directory" table entries have been incorrectly defined in the module, you can generally ignore these as is being done with the following merge command:
<$MergeModule "Merge Modules\atl.msm" IgnoreErrors="Directory:SystemFolder">
All keys added by a correctly authored merge module will use a GUID like key name to ensure uniqueness. The only valid exception to this is for "TARGETDIR" but Windows Installer complains about it also!
Example Error - msmErrorResequenceMerge |
This type of error is always a bug in the failing merge module (the rules for adding custom actions were not followed in the indicated table):
Merge Errors - Use the "IgnoreErrors" parameter to ignore any ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Type : msmErrorResequenceMerge <- Bug in merge module - invalid 'BaseAction' Ignore It? : NO MergeModTable: ModuleInstallUISequence MergeMod Keys: ValidateKeycode.6F2B3983_59B8_11D3_B360_00A0C9DA500E
This should not be ignored and the Module's vendor should be contacted.