Hi There,

I hope someone can help. We have a customer that installed our software by deploying system images. The application was installed by a certain user on the images and that user is no longer with the end user's company.

We are trying to find a way to force uninstallation of our product for the customer. Currently, they log in as an Admin (Vista or Win 7 machine I believe) then rt click the original .msi and click Run As Administrator. They choose remove, but the uninstall croaks on a .ico file that was in the users profile (that is no longer with the company) then rolls back.

Do I have to run msiexec as Admin with a runas utility?

I thought there was a way to force an uninstall, maybe using the System Account. ???

Any help would be greatly appreciated!!
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
if you are saying this was installed per user then an admin can remove using the API.

windowsinstaller.installer and msiEnumProductsEx will get you the SID of the user who did the installation as PER user.

From there you can use the InstallProduct Method to remove the product using the GUID and SID of the named user found previously.
Answered 10/19/2010 by: jmcfadyen
Fifth Degree Black Belt

Please log in to comment
0
It might be quicker to be delete the registry keys which flag its status as per-user. Off the top of my head:.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Managed\[UserSID]
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[UserSID]

Group policy installs feature here:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt\[ProductCode]

There may be a HKCU equivalent of the above.

Once you've deleted this junk, the engine believes it to be a vanilla, per-machine install and you can uninstall it in the usual way.

Another useful dodge, if you know exactly what gets installed by your product (!), is to remove the files and registry data manually then run MSIZap to clean out the installer data.
Answered 10/20/2010 by: VBScab
Red Belt

Please log in to comment
0
I forgot to add what we see in the logged uninstall attempt...

Action start 15:20:56: InstallFinalize.
DEBUG: Error 2330: Error getting file attributes: \\COMPNAME\Users1\MSmfld\Home\My App WorkArea. GetLastError: 4350
MSI (s) (D8:C0) [15:21:02:097]: Product: Our 8.0 Client -- Internal Error 2330. 4350, \\COMPNAME\Users1\MSmfld\Home\My App WorkArea

Internal Error 2330. 4350, \\COMPNAME\Users1\MSmfld\Home\My App WorkArea
Action ended 15:21:02: InstallFinalize. Return value 3.
Action ended 15:21:04: INSTALL. Return value 3.


I don't know if this gives any valuable information based on your responses or not.
Answered 10/20/2010 by: Superfreak3
Black Belt

Please log in to comment
0
Does your MSI contain a property COMPNAME, by any chance? If it does, I think you can probably work out how to proceed.
Answered 10/20/2010 by: VBScab
Red Belt

Please log in to comment
0
No that was just a generic term I put in there for the actual computer name noted in the uninstall log.
Answered 10/20/2010 by: Superfreak3
Black Belt

Please log in to comment
0
We're trying the registry deletions right now, but coding widget to use what you suggested sounds interesting. You wouldn't happen to have some sample code would you?
Answered 10/20/2010 by: Superfreak3
Black Belt

Please log in to comment
0
The WI object model is described in full on MSDN. The SDK also contains some code samples.
Answered 10/20/2010 by: VBScab
Red Belt

Please log in to comment
0
take a look here there is plenty of examples on how to use the automation interface to enum products.

http://blogs.technet.com/b/alexshev/archive/2008/06/30/from-msi-to-wix-part-17-windows-installer-automation-interface-part-2.aspx
Answered 10/20/2010 by: jmcfadyen
Fifth Degree Black Belt

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