[This is preliminary documentation and subject to change.]
This is the GenerateTransform method of the MsiDatabase object. A transform is a way of recording changes to a database without altering the original database. The GenerateTransform method creates a transform which, when applied to the object database, results in the reference database. The transform is stored in the storage object.
object.GenerateTransform reference, storage, long Reserved1, long Reserved2
For tables that exist in both databases, the only difference between the two schemas that is allowed is the addition of columns to the end of the reference table. You cannot add primary key columns to a table or change the order, names, or column definitions of the existing columns as defined in the base table. If neither table contained data, and columns were removed from the reference table, the resulting table would be identical to the base table.
This method returns a boolean value; True if a transform was generated, False if a transform was not generated due to no differences. An error is generated if the method failed.
If storage is NULL, you can test whether two databases are identical without creating a transform. If the databases are identical, ERROR_NO_DATA is returned, NOERROR is returned if differences are found.