I used group policy to deploy an Adobe Reader X .msi file, which successfully updated the machines it was targeted to.
The computer group those machines belong to still has a link to the GPO which deployed the .msi.
Is it the .msi file which checks the version of installed software before running a new installation, or is it another Windows or AD service?
Does the msi file remain on the computer after installation?
I ask because I am concerned that if it is the msi file which detects if the software is already installed, and if the msi file is not kept on the computer, does the msi file continue to be copied to the machine each time it restarts?
I'm no expert on GPO software deployment. However the damn system has given me so many problems in the past I've done a bit of reading and I'll summarize my opinion. I wouldn't call it fact unless you can find technical documents to prove/disprove it.
When you deploy an MSI via Group Policy, it's up to the MSI to detect and uninstall or upgrade old/incompatible versions. This is a function of the msi and Microsoft Installer.
Adobe are pretty good in this regard and appear to fully program their MSIs for upgrades where appropriate.
(I have my suspicions that upgrades that need to reboot after the uninstall before installing the new version fail over Group Policy, because of below, but this is untested.)
I'm pretty sure the MSI never makes it onto the local computer. The machine account runs it from the shared location (UNC) you provided it in the GPO.
It depends on the software install settings in the GPO, but when your client boots, it runs through the machine GPOs, detects the software GPO, has a log that it's already processed it, so it moves on to the next GPO.
This may cause installers that have to run twice (ie uninstall the old version, reboot, then install the new version) to fail. I developed this opinion because when I deployed Acrobat on a range of desktops, one of them uninstalled the old version but the GPO never installed the new version, I did this manually.
There are settings in the GPO to remove the software if it's no longer linked etc, and obviously if these conditions change some re-processing (ie uninstall) would occur.
Windows installer remembers which version of which software is installed.
A stripped down version of the msi-file is stored locally, and used for uninstall. It contains only the logic, not the files, and is thus a lot smaller.
When you add an msi file with a newer version to an existing GPO, you should specify which others msi files are replaced by this newer version. Some msi files have special flags set inside them, that allow the server to auto-detect which other msi files are just older versions of the same app. In this case the list of msi files that are to be replaced will be populated automatically. You can choose if the old ones should first be uninstalled, or just the new one installed on top of them. Also some msi files contain special bits that tell the server which is the right method for them. It is always safer to first let it uninstall the old ones. Many msi files contain an installer which also looks for old versions and removes them.