Uninstalling a Windows app installed by a nonexistent user
We have a .Net Winforms app running on XP machines that are not connected to the internet. We install and update this app by distributing a CD with a .MSI installer file. Users uninstall the old app from the Add or Remove Programs control panel and install the new app from CD.
A while ago we required users to log in under individual accounts and not a shared account. All these individual accounts are "Standard User" accounts in the Power Users group from the XP User Accounts control panel. Such users are able to install the app for all users, we have tested this and it works.
Until recently. A user updating a remote machine says the application does not appear in Add or Remove programs, though the application and data files are installed. Trying to run the new installer shows a dialog reading "The system administrator has set policies to prevent this installation". This is not true, we have set no policies on this machine, and there are no Windows Installer policies in the Group Policy panel of Windows Management Console.
We tried logging on to this machine with an administrator account, and see the same thing.
My current theory is that the application was installed under an account that was later deleted, and only that user can uninstall the app. But why can an administrator not uninstall the app? Is there some way to have the installer remove the old app, regardless of who installed it?
I am not asking how a user can uninstall the app; we create the installer and I want to know how our deployment project can detect and handle this situation.
A technician logged on to the affected machine as an administrator and says the app does appear in the Add/Remove control panel but there's no Remove button, selecting it shows app info but no buttons.
I do not know for sure if the app was originally installed by a deleted user, this is a guess based on the fact user accounts were recently changed on this machine.
All right, this is not an answer but just to help diagnose; can you look in the below registry key and see if there is an entry for your application? This is how Add/Remove Programs is populated:
I suggest using MSIZAP to force removal of the entry, however that won't delete any existing files that might be lying around but simply removes the windows installer entries for the application.
well as you explain yourself. When installing the program has to check if the installation was done under the right conditions. So after installation, let the program check who installed it. Or fire some code for checking before installation (installer package editor)
I also see you talk about disconnected from the internet.. strange to mention, are they also disconnected from the LAN network ?, if so it can go wrong on more places, it might even be a simple case of registry corruption.