{"record":{"id":"576bd0d12e2f7a74","repo":"BCUninstaller/Bulk-Crap-Uninstaller","slug":"this-application-does-not-have-a-valid-uninstaller","errorCode":null,"errorMessage":"This application does not have a valid uninstaller","messagePattern":"This application does not have a valid uninstaller","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"warning","filePath":"source/BulkCrapUninstaller/Functions/AppPropertiesGatherer.cs","lineNumber":117,"sourceCode":"            if (cert == null)\r\n                return GetError(Localisable.PropertiesWindow_Table_ErrorNoCertificate);\r\n\r\n            var localizedCert = new LocalizedX509Certificate2(cert);\r\n\r\n            // Extract required data\r\n            var lq = from property in typeof(LocalizedX509Certificate2).GetProperties()\r\n                     select new SingleProperty(property.GetLocalisedName(), property.GetValue(localizedCert, new object[] { }));\r\n\r\n            // Create and return the table\r\n            var dt = GetCleanDataTable();\r\n            ConvertPropertiesIntoDataTable(lq.ToList(), dt);\r\n            return dt;\r\n        }\r\n\r\n        private static DataTable ExtractFileInfo(ApplicationUninstallerEntry tag)\r\n        {\r\n            if (string.IsNullOrEmpty(tag.UninstallerFullFilename))\r\n                throw new InvalidOperationException(Localisable.PropertiesWindow_Table_ErrorMissingUninstaller);\r\n\r\n            if (!File.Exists(tag.UninstallerFullFilename))\r\n            {\r\n                if (tag.UninstallerKind == UninstallerType.Msiexec)\r\n                    throw new NotSupportedException(Localisable.PropertiesWindow_Table_ErrorMsi);\r\n                throw new IOException(Localisable.PropertiesWindow_Table_ErrorDoesntExist);\r\n            }\r\n            \r\n            var fi = AdvancedFileInfo.FromPath(tag.UninstallerFullFilename);\r\n            \r\n            var lq = from property in typeof(AdvancedFileInfo).GetProperties()\r\n                     select new SingleProperty(property.GetLocalisedName(), property.GetValue(fi, new object[] { }));\r\n\r\n            // Create and return the table\r\n            var dt = GetCleanDataTable();\r\n            ConvertPropertiesIntoDataTable(lq, dt);\r\n            return dt;\r\n        }\r","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/BCUninstaller/Bulk-Crap-Uninstaller/blob/608321de98e92297377b1eb69029af55c25504a1/source/BulkCrapUninstaller/Functions/AppPropertiesGatherer.cs#L99-L135","documentation":"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.","triggerScenarios":"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.","commonSituations":"Selecting a leftover registry entry whose uninstaller was already removed; UWP/store apps without classic uninstallers; manually-added entries.","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)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(entry.UninstallerFullFilename))\n    /* disable / skip the File info tab */","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check for an uninstaller filename before offering the File info tab.","Rescan entries to refresh missing uninstaller paths."],"tags":["properties-window","uninstaller","missing-data"],"backgroundTag":null,"analyzedSha":"608321de98e92297377b1eb69029af55c25504a1","analyzedAt":"2026-08-13T12:17:35.389Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}