If your interested
As a big hosted and everything we do is 100% automated, this is the automated way we came up with uninstalling certain things plesk refuses to detect. The example is given due to plesk "REQUIRING" horde webmail and mailenable to be installed even though smartermail is already installed on the server and is running.
I write all my stuff in powershell so this is using PoSH v2.0
I accomplished finding the binaries to uninstall by defining when I installed plesk to drop my temp files into a specific directory, otherwise by default plesk will delete all your binary files after installation.
#Remove MailEnable
Write-Host " - MailEnable..."
Start-Process "C:\Program Files (x86)\Parallels\Plesk\Mail Servers\Mail Enable\Unwise.exe" "/S ""C:\Program Files (x86)\Parallels\Plesk\Mail Servers\Mail Enable\INSTALL-STANDARD.LOG""" -Wait -NoNewWindow
if(test-path("C:\Program Files (x86)\Parallels\Plesk\Mail Servers\Mail Enable")){Remove-Item "C:\Program Files (x86)\Parallels\Plesk\Mail Servers\Mail Enable" -Recurse -Force}
#Remove Horde Webmail
Write-Host " - Horde Webmail..."
$UninstallFile = Get-Childitem C:\Scripts\Apps\PleskTemp -Recurse | Where-Object {$_.Name -eq "webmail.msi"}
$UninstallDirectory = $UninstallFile.Directory
if(test-path("$UninstallDirectory\$UninstallFile")){Start-Process "MSIExec.exe" "/Passive /X $UninstallDirectory\$UninstallFile" -wait -NoNewWindow}
And for the real hardcore....using Igors method as every msi installed will still show when you pull a WMI-Object Inventory (WARNING: Not all Installations Can Be Removed This Way):
#Attempt To Remove Unnessesary Plesk Features - METHOD A (Replace UninstallMenuName With Proper Value)
#$App = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -eq "UninstallMenuName"}
#$App.Uninstall()
And finally, one other way (Generic Version of the first method):
#Attempt To Remove Unnessesary Plesk Features - METHOD A (Replace UninstallMenuName With Proper Value)
#$App = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -eq "UninstallMenuName"}
#$App.Uninstall()
#Attempt To Remove Unnessesary Plesk Features - METHOD B (Replace BinaryName.Extension With Proper Filename)
#$PleskInstallDir = Dir "C:\" | ForEach {$_.Name} | Where-Object {$_.Length -eq "32"}
#$UninstallFile = Get-Childitem C:\$PleskInstallDir -Recurse | Where-Object {$_.Name -eq "BinaryName.Extension"}
#$UninstallDirectory = $UninstallFile.Directory
#if(test-path("$UninstallDirectory\$UninstallFile")){Start-Process "MSIExec.exe" "/Passive /X $UninstallDirectory\$UninstallFile" -wait -NoNewWindow -RedirectStandardError $ErrorLog}
Enjoy and I hope this helps