BCUninstaller/Bulk-Crap-Uninstaller · warning · InvalidOperationException
This application does not have a valid uninstaller
Error message
This application does not have a valid uninstaller
What it means
ExtractFileInfo is asked to build the file-info table for an entry whose UninstallerFullFilename is null or empty. The file-info tab needs a real uninstaller executable to inspect with AdvancedFileInfo, so an entry lacking one cannot be displayed. The message comes from the localised resource PropertiesWindow_Table_ErrorMissingUninstaller.
Source
Thrown at source/BulkCrapUninstaller/Functions/AppPropertiesGatherer.cs:117
if (cert == null)
return GetError(Localisable.PropertiesWindow_Table_ErrorNoCertificate);
var localizedCert = new LocalizedX509Certificate2(cert);
// Extract required data
var lq = from property in typeof(LocalizedX509Certificate2).GetProperties()
select new SingleProperty(property.GetLocalisedName(), property.GetValue(localizedCert, new object[] { }));
// Create and return the table
var dt = GetCleanDataTable();
ConvertPropertiesIntoDataTable(lq.ToList(), dt);
return dt;
}
private static DataTable ExtractFileInfo(ApplicationUninstallerEntry tag)
{
if (string.IsNullOrEmpty(tag.UninstallerFullFilename))
throw new InvalidOperationException(Localisable.PropertiesWindow_Table_ErrorMissingUninstaller);
if (!File.Exists(tag.UninstallerFullFilename))
{
if (tag.UninstallerKind == UninstallerType.Msiexec)
throw new NotSupportedException(Localisable.PropertiesWindow_Table_ErrorMsi);
throw new IOException(Localisable.PropertiesWindow_Table_ErrorDoesntExist);
}
var fi = AdvancedFileInfo.FromPath(tag.UninstallerFullFilename);
var lq = from property in typeof(AdvancedFileInfo).GetProperties()
select new SingleProperty(property.GetLocalisedName(), property.GetValue(fi, new object[] { }));
// Create and return the table
var dt = GetCleanDataTable();
ConvertPropertiesIntoDataTable(lq, dt);
return dt;
}
View on GitHub (pinned to 608321de98)
Solutions
- Use the Overview tab for entries that have no uninstaller file.
- Run a registry rescan to refresh the entry and repopulate its uninstaller path.
- Uninstall or clean such entries through their proper method (store, MSI, or manual delete).
Defensive patterns
Strategy: validation
Validate before calling
if (string.IsNullOrEmpty(entry.UninstallerFullFilename))
/* disable / skip the File info tab */ Prevention
- Check for an uninstaller filename before offering the File info tab.
- Rescan entries to refresh missing uninstaller paths.
When it happens
Trigger: Opening the File info tab for an orphaned or stub entry; an entry registered with only a display name and no UninstallerString; a portable or scan-only entry without a classic uninstaller.
Common situations: Selecting a leftover registry entry whose uninstaller was already removed; UWP/store apps without classic uninstallers; manually-added entries.
Related errors
- This application does not have a valid registry entry
- Selected tab is invalid or not supported.
- Nothing to display. This application is uninstalled using Wi
- Uninstaller timed out
- The system cannot find the file specified. Indicates that th
AI-assisted analysis of BCUninstaller/Bulk-Crap-Uninstaller@608321de98 (2026-08-13).
Data as JSON: /api/errors/576bd0d12e2f7a74.
Report an issue: GitHub.