I have an already deployed application (msi package) which was installed with no ALLUSERS property, this means that was a per-user installation, and now I have a newer version of this application and I should first remove the older version (if is installed) from a system context. This removal must be done outside of the newer version msi( so i cant use the upgradetable etc)
Is there anyway I can do this, i am thinking that are some registries that has to be added on sys context also, which are present only on the user account.

Any Ideas. Thanks!
0 Comments   [ - ] Hide 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.
Answer this question or Comment on this question for clarity


You just need to create a pre-requisite script that checks for the existence of the msi and then runs:

msiexec /x {PRODUCTCODE} /qb

you can use the installer object functions for this http://msdn.microsoft.com/en-us/library/aa369463%28v=VS.85%29.aspx
Answered 07/09/2010 by: timmsie
Fourth Degree Brown Belt

Please log in to comment
thx for your replay, but I already tried that and I get an: This Action Is Only Valid for Products That Are Currently error, also the package is not available in Add/Remove. it can only be seen on the user on which has been installed.
Answered 07/09/2010 by: dryce
Senior Yellow Belt

Please log in to comment
Kid the machine in to thinking the product is installed per-machine
Steal the Installer Product reg from HKCU from a per-user test install and transpose it in to HKCR\Installer\Products\...
And enjoy the weekend...

I've also seen per-machine installs performed 'over the top of' a per-user install - the Product can then be uninstalled... bit of a ball ache...
Answered 07/09/2010 by: AB
Purple Belt

Please log in to comment
It's not as simple as that. You need to remove a whole bunch of other stuff, too, like

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt\[GUID]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\[UserSID]\GroupMembership
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\[UserSID]\History\[DomainGUID]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\[UserSID]\History\[GUID]

Several of the keys in these hives will feature the ProductCode's GUID in what Microsoft calls "packed" format (which saves 6 bytes...wow!). There's a script knocking around on AppDeploy which translates these back and forth, to make it easier to determine which product is involved. I think that's everything but just in case, once you have the packed GUID, search the registry for it and the regular GUID.

Failure to remove the GP junk will bite you at some future point. BTDT, at a client which insisted on per-user installs. The Software Compliance team identified, for example, over 200 instances of an application for which the client had only 30 licenses. They wanted a tool to remove these spuriously installed instances of apps, where users had logged in to machines other than their normal one. An early version of the tool which failed to address the GP registry stuff caused no end of weird behaviour with apps which only a rebuild fixed.
Answered 07/09/2010 by: VBScab
Red Belt

Please log in to comment
ty all, for your resposes, that trick AB told about, did worked until a point, meaning that system tries to uninstall the package (which is a step forward :) ), but afterwards it gets into another weird errors, related to the package ( its a VMware workstation 4.5 btw) which has many stuff going on under the 'hood', and i have to dig more about those. Also I'll take into consideration what u told me - VBSCAB.

So, ty all and have a nice weekend too :)
Answered 07/09/2010 by: dryce
Senior Yellow Belt

Please log in to comment

I had the same problem with some users that had had our supporters install software for them in user context. Using SCCM I can now uninstall it using this:

In the wanted context just reinstall the product and you can remove it afterwards:

msiexec /i "Programme.msi" REINSTALLMODE=sumo /qn

msiexec /i "Programme.msi" REMOVE=ALL /qn

Answered 01/27/2014 by: SorenHJ
White Belt

Please log in to comment