I don't believe there is any difference in the table definitions between the different versions of the schema.
I only get this problem on MST's, and only after I have used InstallShield to edit it. This is the typical procedure we follow:
1. Customise the Vendor MSI by using Tuner (MST is fine)
2. Modify the MST using our inhouse app (MST is fine)
3. Open the MST up to add anything additional using Developer (MST is now corrupt)
This happens to ALL MST's regardless of schema once opened up again using Developer to add a reg key, a custom action or anything else.
There seems to be no difference in the _Validation table entries before and after, but the fact that the _Validation has the green line through it in ORCA I believe is the issue. I cannot replicate this problem using MSI.DLL, therefore it must be a problem in the InstallShield DLL's when generating the MST.
MSI.DLL generates a Transform by comparing the differences between two MSI's. So programmatically, you make a copy of your MSI, open one with read only, and the other in Transact, make the changes to the transact copy, but rather than doing a Database.Commit, we use a GenerateTransfrom(ModifiedMSI,thebackupcopy,thename of the transform) and that is how a MST is generated using ORCA, and anything else that uses MSI.DLL. As you can see, with the above description, there is no way two identical _Validation tables could exist in the MST using the MSI.DLL.
Basically I am at a loss, and am forced to discard the use of InstallShield Developer for post work on an MST, I have to add that functionality into our inhouse app, which is not what I wanted to do.
Before I modify the inhouse app, I will try and use a different MST to add the reg keys that I need, then merge the Tuner generated MST with the MST used in Developer and see if that eliminates the _Validation table issue. Perhaps a merge of a non corrupt transform will fix the corrupted transform.
Cam.