actually in my first post I 'thought' that I said I wanted two separate definitions. 1 definition would uninstall the old product and the 2nd definition would install the new product. Whatever I may have said, I do find this scenario necessary because there are some clients that simply need the software removed and not reinstalled. Again, the dependency that I requested IS working as far as I can tell, its just that the uninstall fails.
the best/worst practices discussion about having one definition or two really isn't the issue here, the underlying problem is that no matter how I try to get patch manager to uninstall an MSI, it fails to do so. Again, I can create a definition which passes the MSI package to a computer and I can try to perform the /uninstall switch against it using MSIEXEC, but it fails. If I try to work around that by trying to remove the switches/arguments from the equation by employing a separate script and zipping it, it still fails.