Here is a strange issue for you guys.

I've modified an msi for ArcGIS Desktop 9.2 to uninstall all previous versions of ArcGIS referenced in the Upgrade table.

If I execute the msi and associated mst manually via msiexec.exe at the command-line, it works as it should.

If I publish the same msi and mst file using Group Policy, it installs the new version, but does not remove the existing versions.

Any ideas on what I am doing wrong?
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

0
Hi Nicholas,
is the previous version also installed by a GPO?
If yes, you need to set the new entry for v9.2 to upgrade the previous GPO entry.
Regards, Nick
Answered 05/30/2007 by: nheim
Tenth Degree Black Belt

Please log in to comment
0
Thanks for replying.


The previous version was not deployed through GPO. It was installed manually through an administrative install point.

That is why I populated the Upgrade table in the msi, and moved the RemoveExistingProducts to fairly early in the InstallExecuteSequence.


My job would have been much easier had it originally been via GPO.
Answered 05/30/2007 by: nhill118
Senior Yellow Belt

Please log in to comment
0
Hi Nicholas,
where in 'InstallExecuteSequence' have you put 'RemoveExistingProducts'?
Do a log to see, if it's detected.
Do you have the property in the SecureCustomProperties list?
Regards, Nick
Answered 05/30/2007 by: nheim
Tenth Degree Black Belt

Please log in to comment
0
It is between InstallValidate and InstallInitialize.



Here is what I get from the GPO log

MSI (s) (D8:48) [13:32:53:213]: Doing action: RemoveExistingProducts
Action ended 13:32:53: InstallValidate. Return value 1.
MSI (s) (D8:48) [13:32:53:229]: Transforming table Upgrade.

Action start 13:32:53: RemoveExistingProducts.
MSI (s) (D8:48) [13:32:53:245]: Doing action: InstallInitialize
Action ended 13:32:53: RemoveExistingProducts. Return value 1.



Here is what I get from the same msi and mst when executed from the commandline using msiexec.exe (this is just the beginning due to it running through the whole uninstall)

MSI (s) (D8:18) [14:48:28:197]: Doing action: RemoveExistingProducts
Action ended 14:48:28: InstallValidate. Return value 1.
MSI (s) (D8:18) [14:48:28:212]: Transforming table Upgrade.

Action start 14:48:28: RemoveExistingProducts.
MSI (s) (D8:CC) [14:48:28:212]: Resetting cached policy values
MSI (s) (D8:CC) [14:48:28:212]: Machine policy value 'Debug' is 0
MSI (s) (D8:CC) [14:48:28:212]: ******* RunEngine:
******* Product: {40F8FD5F-4701-48D6-A8FC-1F188007DF38}
******* Action:
******* CommandLine: **********
MSI (s) (D8:CC) [14:48:28:823]: End dialog not enabled
MSI (s) (D8:CC) [14:48:28:823]: Original package ==> C:\WINDOWS\Installer\4032b.msi
MSI (s) (D8:CC) [14:48:28:823]: Package we're running from ==> C:\WINDOWS\Installer\4032b.msi
MSI (s) (D8:CC) [14:48:29:074]: APPCOMPAT: looking for appcompat database entry with ProductCode '{40F8FD5F-4701-48D6-A8FC-1F188007DF38}'.
MSI (s) (D8:CC) [14:48:29:074]: APPCOMPAT: no matching ProductCode found in database.
MSI (s) (D8:CC) [14:48:29:074]: Machine policy value 'DisablePatch' is 0
MSI (s) (D8:CC) [14:48:29:074]: Machine policy value 'AllowLockdownPatch' is 0
MSI (s) (D8:CC) [14:48:29:074]: Machine policy value 'DisableLUAPatching' is 0
MSI (s) (D8:CC) [14:48:29:074]: Machine policy value 'DisableFlyWeightPatching' is 0
MSI (s) (D8:CC) [14:48:29:074]: APPCOMPAT: looking for appcompat database entry with ProductCode '{40F8FD5F-4701-48D6-A8FC-1F188007DF38}'.
MSI (s) (D8:CC) [14:48:29:074]: APPCOMPAT: no matching ProductCode found in database.
MSI (s) (D8:CC) [14:48:29:074]: Transforms are not secure.
MSI (s) (D8:CC) [14:48:29:074]: Command Line: UPGRADINGPRODUCTCODE={1F34839E-4826-4B64-B1B3-42E5AE8DEC5A} CLIENTUILEVEL=2 REMOVE=ALL
MSI (s) (D8:CC) [14:48:29:074]: PROPERTY CHANGE: Adding PackageCode property. Its value is '{A6908A87-927B-42F0-8649-CB7DBCDDF8AC}'.
MSI (s) (D8:CC) [14:48:29:074]: Product Code passed to Engine.Initialize: '{40F8FD5F-4701-48D6-A8FC-1F188007DF38}'
MSI (s) (D8:CC) [14:48:29:074]: Product Code from property table before transforms: '{40F8FD5F-4701-48D6-A8FC-1F188007DF38}'
MSI (s) (D8:CC) [14:48:29:074]: Product Code from property table after transforms: '{40F8FD5F-4701-48D6-A8FC-1F188007DF38}'
MSI (s) (D8:CC) [14:48:29:074]: Product registered: entering maintenance mode
MSI (s) (D8:CC) [14:48:29:074]: PROPERTY CHANGE: Adding ProductState property. Its value is '5'.
MSI (s) (D8:CC) [14:48:29:074]: PROPERTY CHANGE: Adding ProductToBeRegistered property. Its value is '1'.
MSI (s) (D8:CC) [14:48:29:074]: Package name retrieved from configuration data: 'setup.msi'
MSI (s) (D8:CC) [14:48:29:074]: Determined that existing product (either this product or the product being upgraded with a patch) is installed per-machine.


I do have the same value in SecureCustomProperties and the Upgrade table.
It does not appear to be detected when ran through the GPO, but I have no idea what the difference is since it's the same msi and mst.
Answered 05/30/2007 by: nhill118
Senior Yellow Belt

Please log in to comment
0
I think I may have found where it is going wrong

During the FindRelatedProducts action, I get this

MSI (s) (D8:48) [13:30:13:441]: FindRelatedProducts: current install is per-user. Related install for product '{40F8FD5F-4701-48D6-A8FC-1F188007DF38}' is per-machine. Skipping...
Action start 13:30:13: FindRelatedProducts.
MSI (s) (D8:48) [13:30:13:441]: Doing action: AppSearch
Action ended 13:30:13: FindRelatedProducts. Return value 1.

It appears that my variable for SecureCustomProperties is not being set. I am Publishing the application under User Configuration in the GPO. Is this dictating the per-user status even though I have ALLUSERS=1 on the Property table in the msi?
Answered 05/30/2007 by: nhill118
Senior Yellow Belt

Please log in to comment
0
Hi Nicholas,
this is true. If the previous version is installed per machine, you can't switch this context to per user.
A per user GPO overrides the ALLUSERS property in the MSI or MST.
You could install a dummy app per computer, which does nothing then to remove the old version. Then in a few weeks if you a sure every computer was being processed you remove this dummy.
You could include a reg key as a flag and check for it with the new version through a LaunchCondition entry to make sure that it's installed after the old one was removed.
Regards, Nick
Answered 05/30/2007 by: nheim
Tenth Degree Black Belt

Please log in to comment
Answer this question or Comment on this question for clarity