The top to consistent issues in VDI and Remote Desktop Services environments is usually printing and user profiles. There are a lot of user profile vendors out there to address the issues with profile settings, but when using traditional Windows roaming profiles in VDI and RDS profiles tend to grow quite large over time. One of the reasons for this bloat is installer programs. Helge Klein wrote a nice article explaining the symptom “under the hood”.
Setup and installation programs, for example Windows Installer, keep track of what they install where. They remove what they installed when the user performs an uninstallation. Sounds good, doesn’t it? Install, use, uninstall, and the system should be clean and pristine again. No. Unfortunately it does not work like that.
The problem lies in the fact that applications typically have computer and user parts. Installations are performed per computer by writing to C:\Program Files and to HKLM. But that is just the initial state of an application. Most programs generate additional data during runtime, be it logs, config files, databases, or whatever. Developers adhering to best practices store that kind of user-specific data in the user profile, a good practice. But here comes the problem:
Uninstallers do not have access to the profiles of all users that might have used the program at some time. Multiple users may have used a program. The may have local or roaming profiles, their profiles may be loaded during uninstallation or not. Very much is uncertain. The only certainty from an uninstaller’s point of view is that it is pretty much impossible to remove all data the application might have generated from all user profiles.