Thanks so much for the help! I got pulled away on another project but finally got back to installer fun.
I made changes according to your suggestions and that resolved the issue where two installs were created on upgrade. However, I'm seeing two additional issues. One I've resolved, one I haven't.
The first was very minor: during a shared install the admin's Roaming installation folder would get a separate, empty subfolder for each version (e.g. appname\1.2.3\install and appname\1.2.4\install). To fix it, I edited the aip as xml and removed [|ProductVersion] from the ExtractionFolder value. I looked "everywhere" in the UI to change that but couldn't find anything, so just went to the raw data.
The second item I could not resolve: after the upgrade, there are uninstall entries in Control Panel for each version. I read through this thread without any luck: viewtopic.php?t=20344
. "Product Details \ Override Windows Installer programs list entry" is not checked and the upgrade code has not changed. Any further suggestions?