I am about to give deliver an upgrade to a product in the form of an MSI to an enterprise. I believe they deploy this to various workstations via GPO.
What is the likely sequence of events in performing an upgrade to a product in this setting?
Will they use GPO to uninstall the previous version of the product first and then deploy the new MSI?
Or will they expect the new MSI to automatically uninstall the previous version?
They will likely make a new publication and revoke the old one.
This is TOTALLY irrelevant for you. MSI that are properly coded WILL trigger at least the uninstall of a previous version.
They will assume the MSI behaves like that because this is the behavior it should have.
Edit: Tiggering the uninstall of an old version is trivial in a new version:
https://stackoverflow.com/questions/114165/how-to-implement-wix-installer-upgrade
So, the new build CAN triger the nuisntall without additional "coding". This is purely configuration.
First thing: When you deliver the program to a single company, you could just ask your customer what he expects.
Generally though, the most important thing is to document the steps needed to upgrade your program. As an admin, I need to now if I can just deploy it and it will take care of things or if I need to undeploy the old version first (which I wouldn't like, but it's OK if I know that it's necessary).
Make this documentation for different methods of installation. GPO is very likely but not guaranteed to be used.
Lastly: Please go through your old questions and accept the answers you've got. Your low accept rate will people make think twice if it's worth their time answering you.
While it may be nice for a vendor to do this, it isn't practical to depend on it.
We usually check if the product is already installed, and if there is an existing uninstall key in the registry, and run that. If that does not fully uninstall the product, we have secondary procedures to remove the known folders and registry keys.
This may also need to include running something like the sc command to stop, disable, and delete services if applicable. Uninstallation may also require a restart before proceeding with the installation of a new version.