I use Wix v3.9, and for my product I setup hard-coded Upgrade code, as it's the unique ID to identify a family of a product.
For Product code I use the '*', in order to generate different IDs for different versions.
During testing of installations, I rebuilt my installer several times, so a new ProductCode was generated for each build.
And now, after testing of several installations, I see from 'Control Panel -> Programs' that my product is installed several times. Why?
An MSI is only uninstalled by a newer MSI if the Upgrade table is set to remove the matching UpgradeCode & ProductVersion range. The easiest way to do this in Wix is to use the MajorUpgrade element.