Strange Published Deployment Behavior
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?
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
Answers (6)
Please log in to answer
Posted by:
nheim
17 years ago
Posted by:
nhill118
17 years ago
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.
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.
Posted by:
nheim
17 years ago
Posted by:
nhill118
17 years ago
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.
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.
Posted by:
nhill118
17 years ago
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?
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?
Posted by:
nheim
17 years ago
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
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
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.