├── .github └── workflows │ └── winget.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Licence.txt ├── NOTICE ├── PrivacyPolicy.txt ├── README.md ├── doc ├── BCU_manual.html ├── BCU_manual.odt ├── Preview.png └── SimplifiedClassDiagram.png ├── installer ├── .gitignore ├── BcuSetup.iss ├── bigImage.bmp ├── bigImage.pdn ├── lang │ ├── ChineseSimplified.isl │ ├── Hindi.isl │ ├── Hungarian.isl │ ├── Turkish.isl │ └── Vietnamese.isl ├── logo.ico ├── scripts │ ├── Ngen.iss │ ├── PortableIcons.iss │ ├── PortablePage.iss │ ├── isxdl │ │ ├── Hindi.ini │ │ ├── Turkish.ini │ │ ├── chinese.ini │ │ ├── czech.ini │ │ ├── english.ini │ │ ├── french.ini │ │ ├── french2.ini │ │ ├── french3.ini │ │ ├── german.ini │ │ ├── german2.ini │ │ ├── german3.ini │ │ ├── isxdl.dll │ │ ├── isxdl.iss │ │ ├── norwegian.ini │ │ ├── polish.ini │ │ ├── portugues.ini │ │ ├── portuguese.ini │ │ ├── russian.ini │ │ ├── spanish.ini │ │ └── swedish.ini │ ├── products.iss │ └── products │ │ ├── dotnetfx11.iss │ │ ├── dotnetfx11lp.iss │ │ ├── dotnetfx11sp1.iss │ │ ├── dotnetfx20.iss │ │ ├── dotnetfx20lp.iss │ │ ├── dotnetfx20sp1.iss │ │ ├── dotnetfx20sp1lp.iss │ │ ├── dotnetfx20sp2.iss │ │ ├── dotnetfx20sp2lp.iss │ │ ├── dotnetfx35.iss │ │ ├── dotnetfx35lp.iss │ │ ├── dotnetfx35sp1.iss │ │ ├── dotnetfx35sp1lp.iss │ │ ├── dotnetfx40client.iss │ │ ├── dotnetfx40full.iss │ │ ├── dotnetfx45.iss │ │ ├── dotnetfxversion.iss │ │ ├── fileversion.iss │ │ ├── ie6.iss │ │ ├── iis.iss │ │ ├── jet4sp8.iss │ │ ├── kb835732.iss │ │ ├── mdac28.iss │ │ ├── msi20.iss │ │ ├── msi31.iss │ │ ├── msi45.iss │ │ ├── msiproduct.iss │ │ ├── sql2005express.iss │ │ ├── sql2008express.iss │ │ ├── sqlcompact35sp2.iss │ │ ├── stringversion.iss │ │ ├── vcredist2005.iss │ │ ├── vcredist2008.iss │ │ ├── vcredist2010.iss │ │ ├── vcredist2012.iss │ │ ├── vcredist2013.iss │ │ ├── wic.iss │ │ └── winversion.iss └── smallImage.bmp ├── publish.bat └── source ├── BCU-console ├── BCU-console.csproj ├── Program.cs └── Properties │ ├── AssemblyInfo.cs │ ├── PublishProfiles │ └── FolderProfile.pubxml │ └── app.manifest ├── BCU-launcher ├── BCU-launcher.rc ├── BCU-launcher.vcxproj ├── main.cpp └── resource.h ├── BulkCrapUninstaller.sln ├── BulkCrapUninstaller ├── BulkCrapUninstaller.csproj ├── BulkCrapUninstaller.csproj.DotSettings ├── CleanLogs.bat ├── Controls │ ├── AdvancedClipboardCopy.Designer.cs │ ├── AdvancedClipboardCopy.ar.resx │ ├── AdvancedClipboardCopy.cs │ ├── AdvancedClipboardCopy.cs.resx │ ├── AdvancedClipboardCopy.de.resx │ ├── AdvancedClipboardCopy.es.resx │ ├── AdvancedClipboardCopy.fr.resx │ ├── AdvancedClipboardCopy.hu.resx │ ├── AdvancedClipboardCopy.it.resx │ ├── AdvancedClipboardCopy.ja.resx │ ├── AdvancedClipboardCopy.nl.resx │ ├── AdvancedClipboardCopy.pl.resx │ ├── AdvancedClipboardCopy.pt-BR.resx │ ├── AdvancedClipboardCopy.pt.resx │ ├── AdvancedClipboardCopy.resx │ ├── AdvancedClipboardCopy.ru.resx │ ├── AdvancedClipboardCopy.sl.resx │ ├── AdvancedClipboardCopy.sv.resx │ ├── AdvancedClipboardCopy.tr.resx │ ├── AdvancedClipboardCopy.vi.resx │ ├── AdvancedClipboardCopy.zh-Hans.resx │ ├── AdvancedClipboardCopy.zh-Hant.resx │ ├── ClipboardCopyItem.cs │ ├── FileTargeter.Designer.cs │ ├── FileTargeter.ar.resx │ ├── FileTargeter.cs │ ├── FileTargeter.cs.resx │ ├── FileTargeter.de.resx │ ├── FileTargeter.es.resx │ ├── FileTargeter.fr.resx │ ├── FileTargeter.hu.resx │ ├── FileTargeter.it.resx │ ├── FileTargeter.ja.resx │ ├── FileTargeter.nl.resx │ ├── FileTargeter.pl.resx │ ├── FileTargeter.pt-BR.resx │ ├── FileTargeter.pt.resx │ ├── FileTargeter.resx │ ├── FileTargeter.ru.resx │ ├── FileTargeter.sl.resx │ ├── FileTargeter.sv.resx │ ├── FileTargeter.tr.resx │ ├── FileTargeter.vi.resx │ ├── FileTargeter.zh-Hans.resx │ ├── FileTargeter.zh-Hant.resx │ ├── ListLegend.Designer.cs │ ├── ListLegend.ar.resx │ ├── ListLegend.cs │ ├── ListLegend.cs.resx │ ├── ListLegend.de.resx │ ├── ListLegend.es.resx │ ├── ListLegend.fr.resx │ ├── ListLegend.hu.resx │ ├── ListLegend.it.resx │ ├── ListLegend.ja.resx │ ├── ListLegend.nl.resx │ ├── ListLegend.pl.resx │ ├── ListLegend.pt-BR.resx │ ├── ListLegend.pt.resx │ ├── ListLegend.resx │ ├── ListLegend.ru.resx │ ├── ListLegend.sl.resx │ ├── ListLegend.sv.resx │ ├── ListLegend.tr.resx │ ├── ListLegend.vi.resx │ ├── ListLegend.zh-Hans.resx │ ├── ListLegend.zh-Hant.resx │ ├── RelatedUninstallerAdder.Designer.cs │ ├── RelatedUninstallerAdder.ar.resx │ ├── RelatedUninstallerAdder.cs │ ├── RelatedUninstallerAdder.cs.resx │ ├── RelatedUninstallerAdder.de.resx │ ├── RelatedUninstallerAdder.es.resx │ ├── RelatedUninstallerAdder.fr.resx │ ├── RelatedUninstallerAdder.hu.resx │ ├── RelatedUninstallerAdder.it.resx │ ├── RelatedUninstallerAdder.ja.resx │ ├── RelatedUninstallerAdder.nl.resx │ ├── RelatedUninstallerAdder.pl.resx │ ├── RelatedUninstallerAdder.pt-BR.resx │ ├── RelatedUninstallerAdder.pt.resx │ ├── RelatedUninstallerAdder.resx │ ├── RelatedUninstallerAdder.ru.resx │ ├── RelatedUninstallerAdder.sl.resx │ ├── RelatedUninstallerAdder.tr.resx │ ├── RelatedUninstallerAdder.vi.resx │ ├── RelatedUninstallerAdder.zh-Hans.resx │ ├── RelatedUninstallerAdder.zh-Hant.resx │ ├── Settings │ │ ├── AdvancedFilters.Designer.cs │ │ ├── AdvancedFilters.ar.resx │ │ ├── AdvancedFilters.cs │ │ ├── AdvancedFilters.cs.resx │ │ ├── AdvancedFilters.de.resx │ │ ├── AdvancedFilters.es.resx │ │ ├── AdvancedFilters.fr.resx │ │ ├── AdvancedFilters.hu.resx │ │ ├── AdvancedFilters.it.resx │ │ ├── AdvancedFilters.ja.resx │ │ ├── AdvancedFilters.nl.resx │ │ ├── AdvancedFilters.pl.resx │ │ ├── AdvancedFilters.pt-BR.resx │ │ ├── AdvancedFilters.pt.resx │ │ ├── AdvancedFilters.resx │ │ ├── AdvancedFilters.ru.resx │ │ ├── AdvancedFilters.sl.resx │ │ ├── AdvancedFilters.sv.resx │ │ ├── AdvancedFilters.tr.resx │ │ ├── AdvancedFilters.vi.resx │ │ ├── AdvancedFilters.zh-Hans.resx │ │ ├── AdvancedFilters.zh-Hant.resx │ │ ├── CacheSettings.Designer.cs │ │ ├── CacheSettings.ar.resx │ │ ├── CacheSettings.cs │ │ ├── CacheSettings.cs.resx │ │ ├── CacheSettings.de.resx │ │ ├── CacheSettings.es.resx │ │ ├── CacheSettings.fr.resx │ │ ├── CacheSettings.hu.resx │ │ ├── CacheSettings.it.resx │ │ ├── CacheSettings.ja.resx │ │ ├── CacheSettings.nl.resx │ │ ├── CacheSettings.pl.resx │ │ ├── CacheSettings.pt-BR.resx │ │ ├── CacheSettings.pt.resx │ │ ├── CacheSettings.resx │ │ ├── CacheSettings.ru.resx │ │ ├── CacheSettings.sl.resx │ │ ├── CacheSettings.sv.resx │ │ ├── CacheSettings.tr.resx │ │ ├── CacheSettings.vi.resx │ │ ├── CacheSettings.zh-Hans.resx │ │ ├── CacheSettings.zh-Hant.resx │ │ ├── PropertiesSidebar.Designer.cs │ │ ├── PropertiesSidebar.ar.resx │ │ ├── PropertiesSidebar.cs │ │ ├── PropertiesSidebar.cs.resx │ │ ├── PropertiesSidebar.de.resx │ │ ├── PropertiesSidebar.es.resx │ │ ├── PropertiesSidebar.fr.resx │ │ ├── PropertiesSidebar.hu.resx │ │ ├── PropertiesSidebar.it.resx │ │ ├── PropertiesSidebar.ja.resx │ │ ├── PropertiesSidebar.nl.resx │ │ ├── PropertiesSidebar.pl.resx │ │ ├── PropertiesSidebar.pt-BR.resx │ │ ├── PropertiesSidebar.pt.resx │ │ ├── PropertiesSidebar.resx │ │ ├── PropertiesSidebar.ru.resx │ │ ├── PropertiesSidebar.sl.resx │ │ ├── PropertiesSidebar.sv.resx │ │ ├── PropertiesSidebar.tr.resx │ │ ├── PropertiesSidebar.vi.resx │ │ ├── PropertiesSidebar.zh-Hans.resx │ │ ├── PropertiesSidebar.zh-Hant.resx │ │ ├── UninstallationSettings.Designer.cs │ │ ├── UninstallationSettings.ar.resx │ │ ├── UninstallationSettings.cs │ │ ├── UninstallationSettings.cs.resx │ │ ├── UninstallationSettings.de.resx │ │ ├── UninstallationSettings.es.resx │ │ ├── UninstallationSettings.fr.resx │ │ ├── UninstallationSettings.hu.resx │ │ ├── UninstallationSettings.it.resx │ │ ├── UninstallationSettings.ja.resx │ │ ├── UninstallationSettings.nl.resx │ │ ├── UninstallationSettings.pl.resx │ │ ├── UninstallationSettings.pt-BR.resx │ │ ├── UninstallationSettings.pt.resx │ │ ├── UninstallationSettings.resx │ │ ├── UninstallationSettings.ru.resx │ │ ├── UninstallationSettings.sl.resx │ │ ├── UninstallationSettings.sv.resx │ │ ├── UninstallationSettings.tr.resx │ │ ├── UninstallationSettings.vi.resx │ │ ├── UninstallationSettings.zh-Hans.resx │ │ └── UninstallationSettings.zh-Hant.resx │ ├── TabControlWithoutHeader.cs │ ├── UninstallConfirmation.Designer.cs │ ├── UninstallConfirmation.ar.resx │ ├── UninstallConfirmation.cs │ ├── UninstallConfirmation.cs.resx │ ├── UninstallConfirmation.de.resx │ ├── UninstallConfirmation.es.resx │ ├── UninstallConfirmation.fr.resx │ ├── UninstallConfirmation.hu.resx │ ├── UninstallConfirmation.it.resx │ ├── UninstallConfirmation.ja.resx │ ├── UninstallConfirmation.nl.resx │ ├── UninstallConfirmation.pl.resx │ ├── UninstallConfirmation.pt-BR.resx │ ├── UninstallConfirmation.pt.resx │ ├── UninstallConfirmation.resx │ ├── UninstallConfirmation.ru.resx │ ├── UninstallConfirmation.sl.resx │ ├── UninstallConfirmation.sv.resx │ ├── UninstallConfirmation.tr.resx │ ├── UninstallConfirmation.vi.resx │ ├── UninstallConfirmation.zh-Hans.resx │ └── UninstallConfirmation.zh-Hant.resx ├── CultureConfigurator.cs ├── EntryPoint.cs ├── Forms │ ├── Helpers │ │ ├── AdvancedClipboardCopyWindow.Designer.cs │ │ ├── AdvancedClipboardCopyWindow.ar.resx │ │ ├── AdvancedClipboardCopyWindow.cs │ │ ├── AdvancedClipboardCopyWindow.cs.resx │ │ ├── AdvancedClipboardCopyWindow.de.resx │ │ ├── AdvancedClipboardCopyWindow.es.resx │ │ ├── AdvancedClipboardCopyWindow.fr.resx │ │ ├── AdvancedClipboardCopyWindow.hu.resx │ │ ├── AdvancedClipboardCopyWindow.it.resx │ │ ├── AdvancedClipboardCopyWindow.ja.resx │ │ ├── AdvancedClipboardCopyWindow.nl.resx │ │ ├── AdvancedClipboardCopyWindow.pl.resx │ │ ├── AdvancedClipboardCopyWindow.pt-BR.resx │ │ ├── AdvancedClipboardCopyWindow.pt.resx │ │ ├── AdvancedClipboardCopyWindow.resx │ │ ├── AdvancedClipboardCopyWindow.ru.resx │ │ ├── AdvancedClipboardCopyWindow.sl.resx │ │ ├── AdvancedClipboardCopyWindow.sv.resx │ │ ├── AdvancedClipboardCopyWindow.tr.resx │ │ ├── AdvancedClipboardCopyWindow.vi.resx │ │ ├── AdvancedClipboardCopyWindow.zh-Hans.resx │ │ ├── AdvancedClipboardCopyWindow.zh-Hant.resx │ │ ├── DebugWindow.Designer.cs │ │ ├── DebugWindow.cs │ │ ├── DebugWindow.resx │ │ ├── FeedbackBox.Designer.cs │ │ ├── FeedbackBox.ar.resx │ │ ├── FeedbackBox.cs │ │ ├── FeedbackBox.cs.resx │ │ ├── FeedbackBox.de.resx │ │ ├── FeedbackBox.es.resx │ │ ├── FeedbackBox.fr.resx │ │ ├── FeedbackBox.hu.resx │ │ ├── FeedbackBox.it.resx │ │ ├── FeedbackBox.ja.resx │ │ ├── FeedbackBox.nl.resx │ │ ├── FeedbackBox.pl.resx │ │ ├── FeedbackBox.pt-BR.resx │ │ ├── FeedbackBox.pt.resx │ │ ├── FeedbackBox.resx │ │ ├── FeedbackBox.ru.resx │ │ ├── FeedbackBox.sl.resx │ │ ├── FeedbackBox.sv.resx │ │ ├── FeedbackBox.tr.resx │ │ ├── FeedbackBox.vi.resx │ │ ├── FeedbackBox.zh-Hans.resx │ │ ├── FeedbackBox.zh-Hant.resx │ │ ├── FeedbackWindow.Designer.cs │ │ ├── FeedbackWindow.ar.resx │ │ ├── FeedbackWindow.cs │ │ ├── FeedbackWindow.cs.resx │ │ ├── FeedbackWindow.de.resx │ │ ├── FeedbackWindow.es.resx │ │ ├── FeedbackWindow.fr.resx │ │ ├── FeedbackWindow.hu.resx │ │ ├── FeedbackWindow.it.resx │ │ ├── FeedbackWindow.ja.resx │ │ ├── FeedbackWindow.nl.resx │ │ ├── FeedbackWindow.pl.resx │ │ ├── FeedbackWindow.pt-BR.resx │ │ ├── FeedbackWindow.pt.resx │ │ ├── FeedbackWindow.resx │ │ ├── FeedbackWindow.ru.resx │ │ ├── FeedbackWindow.sl.resx │ │ ├── FeedbackWindow.sv.resx │ │ ├── FeedbackWindow.tr.resx │ │ ├── FeedbackWindow.vi.resx │ │ ├── FeedbackWindow.zh-Hans.resx │ │ ├── FeedbackWindow.zh-Hant.resx │ │ ├── ListLegendWindow.Designer.cs │ │ ├── ListLegendWindow.cs │ │ ├── ListLegendWindow.hu.resx │ │ ├── ListLegendWindow.resx │ │ ├── NewsPopup.Designer.cs │ │ ├── NewsPopup.ar.resx │ │ ├── NewsPopup.cs │ │ ├── NewsPopup.cs.resx │ │ ├── NewsPopup.de.resx │ │ ├── NewsPopup.es.resx │ │ ├── NewsPopup.fr.resx │ │ ├── NewsPopup.hu.resx │ │ ├── NewsPopup.it.resx │ │ ├── NewsPopup.ja.resx │ │ ├── NewsPopup.nl.resx │ │ ├── NewsPopup.pl.resx │ │ ├── NewsPopup.pt-br.resx │ │ ├── NewsPopup.pt.resx │ │ ├── NewsPopup.resx │ │ ├── NewsPopup.ru.resx │ │ ├── NewsPopup.sl.resx │ │ ├── NewsPopup.sv.resx │ │ ├── NewsPopup.tr.resx │ │ ├── NewsPopup.vi.resx │ │ ├── NewsPopup.zh-Hans.resx │ │ ├── NewsPopup.zh-Hant.resx │ │ ├── PropertiesWindow.Designer.cs │ │ ├── PropertiesWindow.ar.resx │ │ ├── PropertiesWindow.cs │ │ ├── PropertiesWindow.cs.resx │ │ ├── PropertiesWindow.de.resx │ │ ├── PropertiesWindow.es.resx │ │ ├── PropertiesWindow.fr.resx │ │ ├── PropertiesWindow.hu.resx │ │ ├── PropertiesWindow.it.resx │ │ ├── PropertiesWindow.ja.resx │ │ ├── PropertiesWindow.nl.resx │ │ ├── PropertiesWindow.pl.resx │ │ ├── PropertiesWindow.pt-BR.resx │ │ ├── PropertiesWindow.pt.resx │ │ ├── PropertiesWindow.resx │ │ ├── PropertiesWindow.ru.resx │ │ ├── PropertiesWindow.sl.resx │ │ ├── PropertiesWindow.sv.resx │ │ ├── PropertiesWindow.tr.resx │ │ ├── PropertiesWindow.vi.resx │ │ ├── PropertiesWindow.zh-Hans.resx │ │ ├── PropertiesWindow.zh-Hant.resx │ │ ├── RatingPopup.Designer.cs │ │ ├── RatingPopup.ar.resx │ │ ├── RatingPopup.cs │ │ ├── RatingPopup.cs.resx │ │ ├── RatingPopup.de.resx │ │ ├── RatingPopup.es.resx │ │ ├── RatingPopup.fr.resx │ │ ├── RatingPopup.hu.resx │ │ ├── RatingPopup.it.resx │ │ ├── RatingPopup.ja.resx │ │ ├── RatingPopup.nl.resx │ │ ├── RatingPopup.pl.resx │ │ ├── RatingPopup.pt-BR.resx │ │ ├── RatingPopup.pt.resx │ │ ├── RatingPopup.resx │ │ ├── RatingPopup.ru.resx │ │ ├── RatingPopup.sl.resx │ │ ├── RatingPopup.sv.resx │ │ ├── RatingPopup.tr.resx │ │ ├── RatingPopup.vi.resx │ │ ├── RatingPopup.zh-Hans.resx │ │ ├── RatingPopup.zh-Hant.resx │ │ ├── TargetWindow.Designer.cs │ │ ├── TargetWindow.ar.resx │ │ ├── TargetWindow.cs │ │ ├── TargetWindow.cs.resx │ │ ├── TargetWindow.de.resx │ │ ├── TargetWindow.es.resx │ │ ├── TargetWindow.fr.resx │ │ ├── TargetWindow.hu.resx │ │ ├── TargetWindow.it.resx │ │ ├── TargetWindow.ja.resx │ │ ├── TargetWindow.nl.resx │ │ ├── TargetWindow.pl.resx │ │ ├── TargetWindow.pt-BR.resx │ │ ├── TargetWindow.pt.resx │ │ ├── TargetWindow.resx │ │ ├── TargetWindow.ru.resx │ │ ├── TargetWindow.sl.resx │ │ ├── TargetWindow.sv.resx │ │ ├── TargetWindow.tr.resx │ │ ├── TargetWindow.vi.resx │ │ ├── TargetWindow.zh-Hans.resx │ │ └── TargetWindow.zh-Hant.resx │ ├── UninstallerListDoubleClickAction.cs │ ├── Windows │ │ ├── AboutBox.Designer.cs │ │ ├── AboutBox.ar.resx │ │ ├── AboutBox.cs │ │ ├── AboutBox.cs.resx │ │ ├── AboutBox.de.resx │ │ ├── AboutBox.es.resx │ │ ├── AboutBox.fr.resx │ │ ├── AboutBox.hu.resx │ │ ├── AboutBox.it.resx │ │ ├── AboutBox.ja.resx │ │ ├── AboutBox.nl.resx │ │ ├── AboutBox.pl.resx │ │ ├── AboutBox.pt-BR.resx │ │ ├── AboutBox.pt.resx │ │ ├── AboutBox.resx │ │ ├── AboutBox.ru.resx │ │ ├── AboutBox.sl.resx │ │ ├── AboutBox.sv.resx │ │ ├── AboutBox.tr.resx │ │ ├── AboutBox.vi.resx │ │ ├── AboutBox.zh-Hans.resx │ │ ├── AboutBox.zh-Hant.resx │ │ ├── JunkRemoveWindow.Designer.cs │ │ ├── JunkRemoveWindow.ar.resx │ │ ├── JunkRemoveWindow.cs │ │ ├── JunkRemoveWindow.cs.resx │ │ ├── JunkRemoveWindow.de.resx │ │ ├── JunkRemoveWindow.es.resx │ │ ├── JunkRemoveWindow.fr.resx │ │ ├── JunkRemoveWindow.hu.resx │ │ ├── JunkRemoveWindow.it.resx │ │ ├── JunkRemoveWindow.ja.resx │ │ ├── JunkRemoveWindow.nl.resx │ │ ├── JunkRemoveWindow.pl.resx │ │ ├── JunkRemoveWindow.pt-BR.resx │ │ ├── JunkRemoveWindow.pt.resx │ │ ├── JunkRemoveWindow.resx │ │ ├── JunkRemoveWindow.ru.resx │ │ ├── JunkRemoveWindow.sl.resx │ │ ├── JunkRemoveWindow.sv.resx │ │ ├── JunkRemoveWindow.tr.resx │ │ ├── JunkRemoveWindow.vi.resx │ │ ├── JunkRemoveWindow.zh-Hans.resx │ │ ├── JunkRemoveWindow.zh-Hant.resx │ │ ├── MainWindow.Designer.cs │ │ ├── MainWindow.ar.resx │ │ ├── MainWindow.cs │ │ ├── MainWindow.cs.resx │ │ ├── MainWindow.de.resx │ │ ├── MainWindow.es.resx │ │ ├── MainWindow.fr.resx │ │ ├── MainWindow.hu.resx │ │ ├── MainWindow.it.resx │ │ ├── MainWindow.ja.resx │ │ ├── MainWindow.nl.resx │ │ ├── MainWindow.pl.resx │ │ ├── MainWindow.pt-BR.resx │ │ ├── MainWindow.pt.resx │ │ ├── MainWindow.resx │ │ ├── MainWindow.ru.resx │ │ ├── MainWindow.sl.resx │ │ ├── MainWindow.sv.resx │ │ ├── MainWindow.tr.resx │ │ ├── MainWindow.vi.resx │ │ ├── MainWindow.zh-Hans.resx │ │ ├── MainWindow.zh-Hant.resx │ │ ├── SettingsWindow.Designer.cs │ │ ├── SettingsWindow.ar.resx │ │ ├── SettingsWindow.cs │ │ ├── SettingsWindow.cs.resx │ │ ├── SettingsWindow.de.resx │ │ ├── SettingsWindow.es.resx │ │ ├── SettingsWindow.fr.resx │ │ ├── SettingsWindow.hu.resx │ │ ├── SettingsWindow.it.resx │ │ ├── SettingsWindow.ja.resx │ │ ├── SettingsWindow.nl.resx │ │ ├── SettingsWindow.pl.resx │ │ ├── SettingsWindow.pt-BR.resx │ │ ├── SettingsWindow.pt.resx │ │ ├── SettingsWindow.resx │ │ ├── SettingsWindow.ru.resx │ │ ├── SettingsWindow.sl.resx │ │ ├── SettingsWindow.sv.resx │ │ ├── SettingsWindow.tr.resx │ │ ├── SettingsWindow.vi.resx │ │ ├── SettingsWindow.zh-Hans.resx │ │ ├── SettingsWindow.zh-Hant.resx │ │ ├── UninstallProgressWindow.Designer.cs │ │ ├── UninstallProgressWindow.ar.resx │ │ ├── UninstallProgressWindow.cs │ │ ├── UninstallProgressWindow.cs.resx │ │ ├── UninstallProgressWindow.de.resx │ │ ├── UninstallProgressWindow.es.resx │ │ ├── UninstallProgressWindow.fr.resx │ │ ├── UninstallProgressWindow.hu.resx │ │ ├── UninstallProgressWindow.it.resx │ │ ├── UninstallProgressWindow.ja.resx │ │ ├── UninstallProgressWindow.nl.resx │ │ ├── UninstallProgressWindow.pl.resx │ │ ├── UninstallProgressWindow.pt-BR.resx │ │ ├── UninstallProgressWindow.pt.resx │ │ ├── UninstallProgressWindow.resx │ │ ├── UninstallProgressWindow.ru.resx │ │ ├── UninstallProgressWindow.sl.resx │ │ ├── UninstallProgressWindow.sv.resx │ │ ├── UninstallProgressWindow.tr.resx │ │ ├── UninstallProgressWindow.vi.resx │ │ ├── UninstallProgressWindow.zh-Hans.resx │ │ └── UninstallProgressWindow.zh-Hant.resx │ └── Wizards │ │ ├── BeginUninstallTaskWizard.Designer.cs │ │ ├── BeginUninstallTaskWizard.ar.resx │ │ ├── BeginUninstallTaskWizard.cs │ │ ├── BeginUninstallTaskWizard.cs.resx │ │ ├── BeginUninstallTaskWizard.de.resx │ │ ├── BeginUninstallTaskWizard.es.resx │ │ ├── BeginUninstallTaskWizard.fr.resx │ │ ├── BeginUninstallTaskWizard.hu.resx │ │ ├── BeginUninstallTaskWizard.it.resx │ │ ├── BeginUninstallTaskWizard.ja.resx │ │ ├── BeginUninstallTaskWizard.nl.resx │ │ ├── BeginUninstallTaskWizard.pl.resx │ │ ├── BeginUninstallTaskWizard.pt-BR.resx │ │ ├── BeginUninstallTaskWizard.pt.resx │ │ ├── BeginUninstallTaskWizard.resx │ │ ├── BeginUninstallTaskWizard.ru.resx │ │ ├── BeginUninstallTaskWizard.sl.resx │ │ ├── BeginUninstallTaskWizard.sv.resx │ │ ├── BeginUninstallTaskWizard.tr.resx │ │ ├── BeginUninstallTaskWizard.vi.resx │ │ ├── BeginUninstallTaskWizard.zh-Hans.resx │ │ ├── BeginUninstallTaskWizard.zh-Hant.resx │ │ ├── FirstStartBox.Designer.cs │ │ ├── FirstStartBox.ar.resx │ │ ├── FirstStartBox.cs │ │ ├── FirstStartBox.cs.resx │ │ ├── FirstStartBox.de.resx │ │ ├── FirstStartBox.es.resx │ │ ├── FirstStartBox.fr.resx │ │ ├── FirstStartBox.hu.resx │ │ ├── FirstStartBox.it.resx │ │ ├── FirstStartBox.ja.resx │ │ ├── FirstStartBox.nl.resx │ │ ├── FirstStartBox.pl.resx │ │ ├── FirstStartBox.pt-BR.resx │ │ ├── FirstStartBox.pt.resx │ │ ├── FirstStartBox.resx │ │ ├── FirstStartBox.ru.resx │ │ ├── FirstStartBox.sl.resx │ │ ├── FirstStartBox.sv.resx │ │ ├── FirstStartBox.tr.resx │ │ ├── FirstStartBox.vi.resx │ │ ├── FirstStartBox.zh-Hans.resx │ │ └── FirstStartBox.zh-Hant.resx ├── Functions │ ├── AppPropertiesGatherer.cs │ ├── AppUninstaller.cs │ ├── ApplicationList │ │ ├── ApplicationListColors.cs │ │ ├── ApplicationListConstants.cs │ │ ├── CertificateCache.cs │ │ ├── ListViewDelegates.cs │ │ ├── UninstallerListConfigurator.cs │ │ ├── UninstallerListPostProcesser.cs │ │ └── UninstallerListViewUpdater.cs │ ├── MessageBoxes.cs │ ├── Ratings │ │ ├── RatingEntry.cs │ │ ├── RatingManagerWrapper.cs │ │ ├── RatingRenderer.cs │ │ ├── UninstallerRating.cs │ │ ├── UninstallerRatingManager.Utils.cs │ │ └── UninstallerRatingManager.cs │ ├── Tools │ │ ├── ImportExport.cs │ │ ├── LocalizedX509Certificate.cs │ │ ├── OnlineSearchTools.cs │ │ ├── SettingTools.cs │ │ ├── SystemRestore.cs │ │ └── UpdateGrabber.cs │ └── Tracking │ │ ├── DatabaseStatSender.cs │ │ ├── EventHook.cs │ │ ├── SingleEventHook.cs │ │ ├── UsageManager.cs │ │ └── UsageTracker.cs ├── NBugConfigurator.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Localisable.Designer.cs │ ├── Localisable.ar.resx │ ├── Localisable.cs.resx │ ├── Localisable.de.resx │ ├── Localisable.es.resx │ ├── Localisable.fr.resx │ ├── Localisable.hu.resx │ ├── Localisable.it.resx │ ├── Localisable.ja.resx │ ├── Localisable.nl.resx │ ├── Localisable.pl.resx │ ├── Localisable.pt-BR.resx │ ├── Localisable.pt.resx │ ├── Localisable.resx │ ├── Localisable.ru.resx │ ├── Localisable.sl.resx │ ├── Localisable.sv.resx │ ├── Localisable.tr.resx │ ├── Localisable.vi.resx │ ├── Localisable.zh-Hans.resx │ ├── Localisable.zh-Hant.resx │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ ├── Settings.cs │ ├── Settings.settings │ └── app.manifest ├── Resources │ ├── 3.png │ ├── MicrosoftProgram_Install_and_Uninstall.meta.diagcab │ ├── add.multiple.png │ ├── add.png │ ├── bigImage.bmp │ ├── centerline.png │ ├── check.png │ ├── checkmark.pencil.png │ ├── checkmark.png │ ├── checkmark.uncrossed.png │ ├── clean.png │ ├── control.fastforward.png │ ├── control.fastforward.variant.png │ ├── delete.png │ ├── diagram.png │ ├── donate_button.png │ ├── edit.box.png │ ├── filter.png │ ├── folder.open.png │ ├── fullscreen.png │ ├── information.circle.png │ ├── information.png │ ├── layer.add.png │ ├── layer.delete.png │ ├── layer.delete1.png │ ├── layer.down.png │ ├── layer.png │ ├── list.png │ ├── list.reorder.png │ ├── logo.ico │ ├── magnify.browse.png │ ├── magnify.forward.png │ ├── magnify.png │ ├── message.png │ ├── moon.full.png │ ├── os.windows.8.png │ ├── page.copy.png │ ├── rating1.png │ ├── rating3.png │ ├── rating4.png │ ├── rating5.png │ ├── refresh.png │ ├── save.png │ ├── settings.png │ ├── star.png │ ├── stop.png │ ├── table.add.png │ ├── target.png │ ├── timer.png │ ├── warning.png │ └── weather.sun.set.png └── logo.ico ├── BulkCrapUninstallerTests ├── BulkCrapUninstallerTests.csproj ├── Functions │ └── UninstallerRatingManagerTests.cs ├── PipeTests.cs ├── Properties │ └── AssemblyInfo.cs └── SelfUpdaterTests.cs ├── GlobalAssemblyInfo.cs ├── HelperTools ├── HelperTools.cs ├── HelperTools.projitems ├── HelperTools.shproj ├── LogWriter.cs └── ReturnValue.cs ├── KlocTools ├── Collections │ └── ObservedList.cs ├── Controls │ ├── CommandLink.cs │ ├── ContentAlignmentBox.Designer.cs │ ├── ContentAlignmentBox.cs │ ├── ContentAlignmentBox.resx │ ├── DirectorySelectBox.Designer.cs │ ├── DirectorySelectBox.cs │ ├── DirectorySelectBox.cs.resx │ ├── DirectorySelectBox.de.resx │ ├── DirectorySelectBox.es.resx │ ├── DirectorySelectBox.fr.resx │ ├── DirectorySelectBox.hu.resx │ ├── DirectorySelectBox.it.resx │ ├── DirectorySelectBox.ja.resx │ ├── DirectorySelectBox.nl.resx │ ├── DirectorySelectBox.pl.resx │ ├── DirectorySelectBox.pt-BR.resx │ ├── DirectorySelectBox.pt.resx │ ├── DirectorySelectBox.resx │ ├── DirectorySelectBox.ru.resx │ ├── DirectorySelectBox.sl.resx │ ├── DirectorySelectBox.sv.resx │ ├── DirectorySelectBox.tr.resx │ ├── DirectorySelectBox.vi.resx │ ├── DirectorySelectBox.zh-Hans.resx │ ├── DirectorySelectBox.zh-Hant.resx │ ├── EditableCheckedListView.Designer.cs │ ├── EditableCheckedListView.cs │ ├── EditableCheckedListView.resx │ ├── EditableListView.Designer.cs │ ├── EditableListView.cs │ ├── EditableListView.resx │ ├── FacebookButton.cs │ ├── FacebookStatusButton.cs │ ├── FixedFlowLayoutPanel.cs │ ├── LineSeparator.Designer.cs │ ├── LineSeparator.cs │ ├── PassThroughLabel.cs │ ├── PathSelectBox.Designer.cs │ ├── PathSelectBox.cs │ ├── PathSelectBox.cs.resx │ ├── PathSelectBox.de.resx │ ├── PathSelectBox.es.resx │ ├── PathSelectBox.fr.resx │ ├── PathSelectBox.hu.resx │ ├── PathSelectBox.it.resx │ ├── PathSelectBox.ja.resx │ ├── PathSelectBox.nl.resx │ ├── PathSelectBox.pl.resx │ ├── PathSelectBox.pt-BR.resx │ ├── PathSelectBox.pt.resx │ ├── PathSelectBox.resx │ ├── PathSelectBox.ru.resx │ ├── PathSelectBox.sl.resx │ ├── PathSelectBox.sv.resx │ ├── PathSelectBox.tr.resx │ ├── PathSelectBox.vi.resx │ ├── PathSelectBox.zh-Hans.resx │ ├── PathSelectBox.zh-Hant.resx │ ├── SearchBox.Designer.cs │ ├── SearchBox.ar.resx │ ├── SearchBox.cs │ ├── SearchBox.cs.resx │ ├── SearchBox.de.resx │ ├── SearchBox.es.resx │ ├── SearchBox.fr.resx │ ├── SearchBox.hu.resx │ ├── SearchBox.it.resx │ ├── SearchBox.ja.resx │ ├── SearchBox.nl.resx │ ├── SearchBox.pl.resx │ ├── SearchBox.pt-BR.resx │ ├── SearchBox.pt.resx │ ├── SearchBox.resx │ ├── SearchBox.ru.resx │ ├── SearchBox.sl.resx │ ├── SearchBox.sv.resx │ ├── SearchBox.tr.resx │ ├── SearchBox.vi.resx │ ├── SearchBox.zh-Hans.resx │ ├── SearchBox.zh-Hant.resx │ ├── ToolStripNumberControl.cs │ ├── TwitterButton.cs │ ├── TwitterStatusButton.cs │ ├── WindowTargeter.Designer.cs │ ├── WindowTargeter.ar.resx │ ├── WindowTargeter.cs │ ├── WindowTargeter.cs.resx │ ├── WindowTargeter.de.resx │ ├── WindowTargeter.es.resx │ ├── WindowTargeter.fr.resx │ ├── WindowTargeter.hu.resx │ ├── WindowTargeter.it.resx │ ├── WindowTargeter.ja.resx │ ├── WindowTargeter.nl.resx │ ├── WindowTargeter.pl.resx │ ├── WindowTargeter.pt-BR.resx │ ├── WindowTargeter.pt.resx │ ├── WindowTargeter.resx │ ├── WindowTargeter.ru.resx │ ├── WindowTargeter.sl.resx │ ├── WindowTargeter.sv.resx │ ├── WindowTargeter.tr.resx │ ├── WindowTargeter.vi.resx │ ├── WindowTargeter.zh-Hans.resx │ └── WindowTargeter.zh-Hant.resx ├── DisplayMode.cs ├── Events │ ├── CountingUpdateEventArgs.cs │ └── PropertyChangedEventArgs.cs ├── Extensions │ ├── BooleanTools.cs │ ├── CheckBoxExtension.cs │ ├── CollectionExtensions.cs │ ├── DictionaryExtensions.cs │ ├── EnumerableExtensions.cs │ ├── EventExtensions.cs │ ├── FormsExtensions.cs │ ├── IconExtensions.cs │ ├── IoExtensions.cs │ ├── MiscExtensions.cs │ ├── ParentProcessUtilities.cs │ ├── ProcessExtensions.cs │ ├── ReadOnlyDictionaryWrapper.cs │ ├── RegistryKeyExtensions.cs │ ├── RichTextBoxExtensions.cs │ ├── StreamExtensions.cs │ ├── StringExtensions.cs │ ├── TimeExtensions.cs │ ├── WebExtensions.cs │ └── XmlExtensions.cs ├── Forms │ ├── CmbBasicSettings.cs │ ├── CmbCheckboxSettings.cs │ ├── CmbHyperlinkSettings.cs │ ├── CustomMessageBox.cs │ ├── CustomMessageBox.designer.cs │ ├── CustomMessageBox.resx │ ├── LoadingDialog.Designer.cs │ ├── LoadingDialog.cs │ ├── LoadingDialog.resx │ ├── LoadingDialogInterface.cs │ ├── OverlaySplashScreen.Designer.cs │ ├── OverlaySplashScreen.cs │ ├── OverlaySplashScreen.resx │ ├── ProcessWaiter.Designer.cs │ ├── ProcessWaiter.ar.resx │ ├── ProcessWaiter.cs │ ├── ProcessWaiter.cs.resx │ ├── ProcessWaiter.de.resx │ ├── ProcessWaiter.es.resx │ ├── ProcessWaiter.fr.resx │ ├── ProcessWaiter.hu.resx │ ├── ProcessWaiter.it.resx │ ├── ProcessWaiter.ja.resx │ ├── ProcessWaiter.nl.resx │ ├── ProcessWaiter.pl.resx │ ├── ProcessWaiter.pt-BR.resx │ ├── ProcessWaiter.pt.resx │ ├── ProcessWaiter.resx │ ├── ProcessWaiter.ru.resx │ ├── ProcessWaiter.sl.resx │ ├── ProcessWaiter.sv.resx │ ├── ProcessWaiter.tr.resx │ ├── ProcessWaiter.vi.resx │ ├── ProcessWaiter.zh-Hans.resx │ ├── ProcessWaiter.zh-Hant.resx │ ├── ProcessWaiterControl.Designer.cs │ ├── ProcessWaiterControl.ar.resx │ ├── ProcessWaiterControl.cs │ ├── ProcessWaiterControl.cs.resx │ ├── ProcessWaiterControl.de.resx │ ├── ProcessWaiterControl.es.resx │ ├── ProcessWaiterControl.fr.resx │ ├── ProcessWaiterControl.hu.resx │ ├── ProcessWaiterControl.it.resx │ ├── ProcessWaiterControl.ja.resx │ ├── ProcessWaiterControl.nl.resx │ ├── ProcessWaiterControl.pl.resx │ ├── ProcessWaiterControl.pt-BR.resx │ ├── ProcessWaiterControl.pt.resx │ ├── ProcessWaiterControl.resx │ ├── ProcessWaiterControl.ru.resx │ ├── ProcessWaiterControl.sl.resx │ ├── ProcessWaiterControl.sv.resx │ ├── ProcessWaiterControl.tr.resx │ ├── ProcessWaiterControl.vi.resx │ ├── ProcessWaiterControl.zh-Hans.resx │ ├── ProcessWaiterControl.zh-Hant.resx │ ├── SplashScreen.cs │ ├── StringEditBox.Designer.cs │ ├── StringEditBox.cs │ ├── StringEditBox.resx │ ├── Tools │ │ ├── Buttons.Designer.cs │ │ ├── Buttons.ar.resx │ │ ├── Buttons.cs.resx │ │ ├── Buttons.de.resx │ │ ├── Buttons.es.resx │ │ ├── Buttons.fr.resx │ │ ├── Buttons.hu.resx │ │ ├── Buttons.it.resx │ │ ├── Buttons.ja.resx │ │ ├── Buttons.nl.resx │ │ ├── Buttons.pl.resx │ │ ├── Buttons.pt-BR.resx │ │ ├── Buttons.pt.resx │ │ ├── Buttons.resx │ │ ├── Buttons.ru.resx │ │ ├── Buttons.sl.resx │ │ ├── Buttons.sv.resx │ │ ├── Buttons.tr.resx │ │ ├── Buttons.vi.resx │ │ ├── Buttons.zh-Hans.resx │ │ ├── Buttons.zh-Hant.resx │ │ ├── ComboBoxWrapper.cs │ │ ├── GlobalMouseMove.cs │ │ ├── MouseMovedEvent.cs │ │ ├── PremadeDialogs.cs │ │ ├── ReferencedComponent.cs │ │ ├── SingleColorTable.cs │ │ ├── StandardSystemColorTable.cs │ │ └── WindowStyleController.cs │ ├── WindowTargeterDialog.Designer.cs │ ├── WindowTargeterDialog.ar.resx │ ├── WindowTargeterDialog.cs │ ├── WindowTargeterDialog.cs.resx │ ├── WindowTargeterDialog.de.resx │ ├── WindowTargeterDialog.es.resx │ ├── WindowTargeterDialog.fr.resx │ ├── WindowTargeterDialog.hu.resx │ ├── WindowTargeterDialog.it.resx │ ├── WindowTargeterDialog.ja.resx │ ├── WindowTargeterDialog.nl.resx │ ├── WindowTargeterDialog.pl.resx │ ├── WindowTargeterDialog.pt-BR.resx │ ├── WindowTargeterDialog.pt.resx │ ├── WindowTargeterDialog.resx │ ├── WindowTargeterDialog.ru.resx │ ├── WindowTargeterDialog.sl.resx │ ├── WindowTargeterDialog.sv.resx │ ├── WindowTargeterDialog.tr.resx │ ├── WindowTargeterDialog.vi.resx │ ├── WindowTargeterDialog.zh-Hans.resx │ └── WindowTargeterDialog.zh-Hant.resx ├── IO │ ├── AdvancedFileInfo.cs │ ├── Arguments.cs │ ├── DismTools.cs │ ├── FileSize.cs │ ├── MsiTools.cs │ ├── NetFrameworkTools.cs │ ├── SysRestore.cs │ ├── WindowsFeatureInfo.cs │ └── WmiQueries.cs ├── KlocTools.csproj ├── Licence.licenseheader ├── Limited.cs ├── Localising │ ├── LocalisationExtensions.cs │ ├── LocalisedEnumWrapper.cs │ └── LocalisedNameAttribute.cs ├── Native │ ├── CSIDL.cs │ ├── ControlPanelCanonicalNames.cs │ └── MsiWrapper.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Localisation.Designer.cs │ ├── Localisation.ar.resx │ ├── Localisation.cs.resx │ ├── Localisation.de.resx │ ├── Localisation.es.resx │ ├── Localisation.fr.resx │ ├── Localisation.hu.resx │ ├── Localisation.it.resx │ ├── Localisation.ja.resx │ ├── Localisation.nl.resx │ ├── Localisation.pl.resx │ ├── Localisation.pt-BR.resx │ ├── Localisation.pt.resx │ ├── Localisation.resx │ ├── Localisation.ru.resx │ ├── Localisation.sl.resx │ ├── Localisation.sv.resx │ ├── Localisation.tr.resx │ ├── Localisation.vi.resx │ ├── Localisation.zh-Hans.resx │ ├── Localisation.zh-Hant.resx │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ ├── Resources.Designer.cs │ └── Resources.resx ├── Resources │ ├── CommonStrings.Designer.cs │ ├── CommonStrings.ar.resx │ ├── CommonStrings.cs.resx │ ├── CommonStrings.de.resx │ ├── CommonStrings.es.resx │ ├── CommonStrings.fr.resx │ ├── CommonStrings.hu.resx │ ├── CommonStrings.it.resx │ ├── CommonStrings.ja.resx │ ├── CommonStrings.nl.resx │ ├── CommonStrings.pl.resx │ ├── CommonStrings.pt-BR.resx │ ├── CommonStrings.pt.resx │ ├── CommonStrings.resx │ ├── CommonStrings.ru.resx │ ├── CommonStrings.sl.resx │ ├── CommonStrings.sv.resx │ ├── CommonStrings.tr.resx │ ├── CommonStrings.vi.resx │ ├── CommonStrings.zh-Hans.resx │ ├── CommonStrings.zh-Hant.resx │ ├── centerline.png │ ├── facebookButton.png │ └── twitterButton.png ├── Sorters │ └── ColumnSorter.cs ├── Subsystems │ ├── FontGrabber.cs │ ├── GlobalHotkeys.cs │ ├── HotkeyEntry.cs │ ├── RandomFilePicker.cs │ ├── WindowHoverEventArgs.cs │ └── WindowHoverSearcher.cs ├── Tools │ ├── CompiledPropertyInfo.cs │ ├── CompressionTools.cs │ ├── DrawingTools.cs │ ├── FilesystemTools.cs │ ├── GuidTools.cs │ ├── MachineType.cs │ ├── PathTools.cs │ ├── ProcessStartCommand.cs │ ├── ProcessTools.cs │ ├── ReflectionTools.cs │ ├── RegistryTools.cs │ ├── SerializationTools.cs │ ├── Sift4.cs │ ├── SleepControls.cs │ ├── StringTools.cs │ ├── SymbolicLinkType.cs │ └── WindowsTools.cs └── YesNoAsk.cs ├── Licence.licenseheader ├── NBug_custom ├── Core │ ├── Reporting │ │ ├── BugReport.cs │ │ ├── Feedback.cs │ │ ├── Info │ │ │ ├── AssemblyInfo.cs │ │ │ ├── ConfigurationInfo.cs │ │ │ ├── GeneralInfo.cs │ │ │ ├── Report.cs │ │ │ └── SystemInfo.cs │ │ └── MiniDump │ │ │ ├── DumpTypeFlag.cs │ │ │ └── DumpWriter.cs │ ├── Submission │ │ ├── Custom │ │ │ └── Custom.cs │ │ ├── Database │ │ │ ├── Ado.cs │ │ │ ├── MsSql.cs │ │ │ └── MySql.cs │ │ ├── Dispatcher.cs │ │ ├── IProtocol.cs │ │ ├── IProtocolFactory.cs │ │ ├── ProtocolBase.cs │ │ ├── Protocols.cs │ │ ├── Tracker │ │ │ ├── BugNet.cs │ │ │ ├── Bugzilla.cs │ │ │ ├── GitHub.cs │ │ │ ├── GoogleCode.cs │ │ │ ├── Mantis │ │ │ │ ├── AccountData.cs │ │ │ │ ├── AttachmentData.cs │ │ │ │ ├── CustomFieldValueForIssueData.cs │ │ │ │ ├── IssueData.cs │ │ │ │ ├── IssueNoteData.cs │ │ │ │ ├── ObjectRef.cs │ │ │ │ ├── ProjectVersionData.cs │ │ │ │ ├── RelationshipData.cs │ │ │ │ ├── UserData.cs │ │ │ │ └── nusoap.php.patch │ │ │ ├── Redmine.cs │ │ │ └── Trac.cs │ │ └── Web │ │ │ ├── Ftp.cs │ │ │ ├── Http.cs │ │ │ └── Mail.cs │ ├── UI │ │ ├── Console │ │ │ └── ConsoleUI.cs │ │ ├── Custom │ │ │ └── CustomUI.cs │ │ ├── Developer │ │ │ ├── InternalExceptionViewer.Designer.cs │ │ │ ├── InternalExceptionViewer.cs │ │ │ ├── InternalExceptionViewer.resx │ │ │ ├── InternalLogViewer.Designer.cs │ │ │ ├── InternalLogViewer.cs │ │ │ └── InternalLogViewer.resx │ │ ├── UIDialogResult.cs │ │ ├── UISelector.cs │ │ ├── WPF │ │ │ └── WPFUI.cs │ │ └── WinForms │ │ │ ├── Feedback.Designer.cs │ │ │ ├── Feedback.cs │ │ │ ├── Feedback.resx │ │ │ ├── Full.Designer.cs │ │ │ ├── Full.cs │ │ │ ├── Full.es.resx │ │ │ ├── Full.fr.resx │ │ │ ├── Full.hu.resx │ │ │ ├── Full.ja.resx │ │ │ ├── Full.nl.resx │ │ │ ├── Full.pt-BR.resx │ │ │ ├── Full.resx │ │ │ ├── Full.sv.resx │ │ │ ├── Full.tr.resx │ │ │ ├── Full.vi.resx │ │ │ ├── Full.zh-Hans.resx │ │ │ ├── Full.zh-Hant.resx │ │ │ ├── Minimal.cs │ │ │ ├── Normal.Designer.cs │ │ │ ├── Normal.cs │ │ │ ├── Normal.resx │ │ │ ├── Panels │ │ │ ├── ExceptionDetailView.Designer.cs │ │ │ ├── ExceptionDetailView.cs │ │ │ ├── ExceptionDetailView.resx │ │ │ ├── ExceptionDetails.Designer.cs │ │ │ ├── ExceptionDetails.cs │ │ │ └── ExceptionDetails.resx │ │ │ └── WinFormsUI.cs │ └── Util │ │ ├── ConnectionStringParser.cs │ │ ├── ExceptionThread.cs │ │ ├── Exceptions │ │ ├── NBugConfigurationException.cs │ │ ├── NBugException.cs │ │ └── NBugRuntimeException.cs │ │ ├── Logging │ │ └── Logger.cs │ │ ├── ProtectedConfiguration.cs │ │ ├── PublicResources.cs │ │ ├── Serialization │ │ ├── SerializableDictionary.cs │ │ └── SerializableException.cs │ │ ├── Storage │ │ ├── StoragePath.cs │ │ ├── StoredItemFile.cs │ │ ├── Storer.cs │ │ └── ZipStorer.cs │ │ └── Web │ │ └── StreamUpload.cs ├── Enums │ ├── LoggerCategory.cs │ ├── MiniDumpType.cs │ ├── StoragePath.cs │ ├── UIMode.cs │ └── UIProvider.cs ├── Events │ ├── CustomSubmissionEventArgs.cs │ └── CustomUIEventArgs.cs ├── Exceptions.cs ├── Handler.cs ├── Helpers │ └── EmailDestinationBuilder.cs ├── NBug.Configurator │ ├── NBug.Configurator.exe │ ├── NBug.Configurator.exe.config │ ├── NBug.Examples.WinForms.exe │ ├── NBug.Examples.WinForms.exe.config │ └── NBug.dll ├── NBug.csproj ├── NBug_LICENSE.md ├── NBug_README.md ├── Properties │ ├── AssemblyInfo.cs │ ├── Localization.Designer.cs │ ├── Localization.ar.resx │ ├── Localization.cs.resx │ ├── Localization.de.resx │ ├── Localization.es.resx │ ├── Localization.fi-FI.resx │ ├── Localization.fr.resx │ ├── Localization.hr.resx │ ├── Localization.hu.resx │ ├── Localization.it.resx │ ├── Localization.ja.resx │ ├── Localization.ko-KR.resx │ ├── Localization.nl.resx │ ├── Localization.pl.resx │ ├── Localization.pt-BR.resx │ ├── Localization.pt.resx │ ├── Localization.resx │ ├── Localization.ru.resx │ ├── Localization.sl.resx │ ├── Localization.sv.resx │ ├── Localization.tr.resx │ ├── Localization.vi.resx │ ├── Localization.zh-Hans.resx │ ├── Localization.zh-Hant.resx │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ ├── Settings.settings │ └── SettingsOverride.cs ├── Settings.cs └── resources │ ├── Error_16.png │ ├── Feedback.png │ ├── Forum_16.png │ ├── Help_16.png │ ├── NBug_Icon_PNG_16.png │ ├── NBug_icon_16.ico │ ├── NBug_icon_16_borders.ico │ ├── Send.png │ ├── VS2010_16.png │ └── icon.ico ├── NetSettingBinder ├── ISettingChangedHandlerEntry.cs ├── LockedList.cs ├── NetSettingBinder.csproj ├── Properties │ ├── AssemblyInfo.cs │ └── PublishProfiles │ │ └── FolderProfile.pubxml ├── ReflectionTools.cs ├── SettingBinder.Forms.cs ├── SettingBinder.cs ├── SettingChangedEventArgs.cs ├── SettingChangedEventHandler.cs └── SettingChangedHandlerEntry.cs ├── ObjectListView ├── CellEditing │ ├── CellEditKeyEngine.cs │ ├── CellEditors.cs │ └── EditorRegistry.cs ├── CustomDictionary.xml ├── DataListView.cs ├── DataTreeListView.cs ├── DragDrop │ ├── DragSource.cs │ ├── DropSink.cs │ └── OLVDataObject.cs ├── FastDataListView.cs ├── FastObjectListView.cs ├── Filtering │ ├── Cluster.cs │ ├── ClusteringStrategy.cs │ ├── ClustersFromGroupsStrategy.cs │ ├── DateTimeClusteringStrategy.cs │ ├── FilterMenuBuilder.cs │ ├── Filters.cs │ ├── FlagClusteringStrategy.cs │ ├── ICluster.cs │ ├── IClusteringStrategy.cs │ └── TextMatchFilter.cs ├── FullClassDiagram.cd ├── GlobalSuppressions.cs ├── Implementation │ ├── Attributes.cs │ ├── Comparers.cs │ ├── DataSourceAdapter.cs │ ├── Delegates.cs │ ├── DragSource.cs │ ├── DropSink.cs │ ├── Enums.cs │ ├── Events.cs │ ├── GroupingParameters.cs │ ├── Groups.cs │ ├── Munger.cs │ ├── NativeMethods.cs │ ├── NullableDictionary.cs │ ├── OLVListItem.cs │ ├── OLVListSubItem.cs │ ├── OlvListViewHitTestInfo.cs │ ├── TreeDataSourceAdapter.cs │ ├── VirtualGroups.cs │ └── VirtualListDataSource.cs ├── OLVColumn.cs ├── ObjectListView.DesignTime.cs ├── ObjectListView.FxCop ├── ObjectListView.cs ├── ObjectListView.csproj ├── ObjectListView.shfb ├── Properties │ ├── AssemblyInfo.cs │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ ├── Resources.Designer.cs │ └── Resources.resx ├── Rendering │ ├── Adornments.cs │ ├── Decorations.cs │ ├── Overlays.cs │ ├── Renderers.cs │ ├── Styles.cs │ └── TreeRenderer.cs ├── Resources │ ├── clear-filter.png │ ├── coffee.jpg │ ├── filter-icons3.png │ ├── filter.png │ ├── sort-ascending.png │ └── sort-descending.png ├── SubControls │ ├── GlassPanelForm.cs │ ├── HeaderControl.cs │ ├── ToolStripCheckedListBox.cs │ └── ToolTipControl.cs ├── TreeListView.cs ├── Utilities │ ├── ColumnSelectionForm.Designer.cs │ ├── ColumnSelectionForm.cs │ ├── ColumnSelectionForm.resx │ ├── Generator.cs │ ├── OLVExporter.cs │ └── TypedObjectListView.cs └── VirtualObjectListView.cs ├── OculusHelper ├── OculusApp.cs ├── OculusHelper.csproj ├── OculusManager.cs ├── Program.cs └── Properties │ ├── AssemblyInfo.cs │ └── PublishProfiles │ └── FolderProfile.pubxml ├── PortableSettingsProvider ├── PortableSettingsProvider.cs ├── PortableSettingsProvider.csproj ├── Properties │ ├── AssemblyInfo.cs │ └── PublishProfiles │ │ └── FolderProfile.pubxml └── U3SettingsProvider.cs ├── ScriptHelper ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ ├── app.manifest │ └── launchSettings.json ├── ScriptHelper.csproj └── Tweaks.cs ├── SimpleTreeMap ├── Element.cs ├── Properties │ ├── AssemblyInfo.cs │ └── PublishProfiles │ │ └── FolderProfile.pubxml ├── SimpleTreeMap.csproj ├── Slice.cs ├── SliceMaker.cs ├── SliceRectangle.cs ├── SliceResult.cs ├── TreeMap.Designer.cs ├── TreeMap.cs └── TreeMap.resx ├── SimpleTreeMapTests ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings └── SimpleTreeMapTests.csproj ├── SteamHelper ├── Misc.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── launchSettings.json ├── SteamApplicationInfo.cs ├── SteamHelper.csproj ├── SteamInstallation.cs ├── SteamUninstaller.cs └── steam.ico ├── StoreAppHelper ├── App.cs ├── AppManager.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── app.manifest ├── StoreAppHelper.csproj └── icon.ico ├── UninstallTools ├── ApplicationEntrySerializer.cs ├── ApplicationUninstallerEntry.cs ├── Controls │ ├── FilterEditor.Designer.cs │ ├── FilterEditor.ar.resx │ ├── FilterEditor.cs │ ├── FilterEditor.cs.resx │ ├── FilterEditor.de.resx │ ├── FilterEditor.es.resx │ ├── FilterEditor.fr.resx │ ├── FilterEditor.hu.resx │ ├── FilterEditor.it.resx │ ├── FilterEditor.ja.resx │ ├── FilterEditor.nl.resx │ ├── FilterEditor.pl.resx │ ├── FilterEditor.pt-BR.resx │ ├── FilterEditor.pt.resx │ ├── FilterEditor.resx │ ├── FilterEditor.ru.resx │ ├── FilterEditor.sl.resx │ ├── FilterEditor.sv.resx │ ├── FilterEditor.tr.resx │ ├── FilterEditor.vi.resx │ ├── FilterEditor.zh-Hans.resx │ ├── FilterEditor.zh-Hant.resx │ ├── UninstallListEditor.Designer.cs │ ├── UninstallListEditor.ar.resx │ ├── UninstallListEditor.cs │ ├── UninstallListEditor.cs.resx │ ├── UninstallListEditor.de.resx │ ├── UninstallListEditor.es.resx │ ├── UninstallListEditor.fr.resx │ ├── UninstallListEditor.hu.resx │ ├── UninstallListEditor.it.resx │ ├── UninstallListEditor.ja.resx │ ├── UninstallListEditor.nl.resx │ ├── UninstallListEditor.pl.resx │ ├── UninstallListEditor.pt-BR.resx │ ├── UninstallListEditor.pt.resx │ ├── UninstallListEditor.resx │ ├── UninstallListEditor.ru.resx │ ├── UninstallListEditor.sl.resx │ ├── UninstallListEditor.sv.resx │ ├── UninstallListEditor.tr.resx │ ├── UninstallListEditor.vi.resx │ ├── UninstallListEditor.zh-Hans.resx │ ├── UninstallListEditor.zh-Hant.resx │ └── UninstallerIconGetter.cs ├── Dialogs │ ├── StartupManagerWindow.Designer.cs │ ├── StartupManagerWindow.ar.resx │ ├── StartupManagerWindow.cs │ ├── StartupManagerWindow.cs.resx │ ├── StartupManagerWindow.de.resx │ ├── StartupManagerWindow.es.resx │ ├── StartupManagerWindow.fr.resx │ ├── StartupManagerWindow.hu.resx │ ├── StartupManagerWindow.it.resx │ ├── StartupManagerWindow.ja.resx │ ├── StartupManagerWindow.nl.resx │ ├── StartupManagerWindow.pl.resx │ ├── StartupManagerWindow.pt-BR.resx │ ├── StartupManagerWindow.pt.resx │ ├── StartupManagerWindow.resx │ ├── StartupManagerWindow.ru.resx │ ├── StartupManagerWindow.sl.resx │ ├── StartupManagerWindow.sv.resx │ ├── StartupManagerWindow.tr.resx │ ├── StartupManagerWindow.vi.resx │ ├── StartupManagerWindow.zh-Hans.resx │ └── StartupManagerWindow.zh-Hant.resx ├── Factory │ ├── ApplicationEntryTools.cs │ ├── ApplicationUninstallerFactory.cs │ ├── ApplicationUninstallerFactoryCache.cs │ ├── ChocolateyFactory.cs │ ├── ConcurrentApplicationFactory.cs │ ├── DirectoryFactory.cs │ ├── FactoryThreadedHelpers.cs │ ├── FactoryTools.cs │ ├── IUninstallerFactory.cs │ ├── InfoAdders │ │ ├── AppExecutablesSearcher.cs │ │ ├── BasicIconGetter.cs │ │ ├── CertificateGetter.cs │ │ ├── ExecutableAttributeExtractor.cs │ │ ├── FastSizeGenerator.cs │ │ ├── FileIconGetter.cs │ │ ├── GenerateSteamHelperStrings.cs │ │ ├── IMissingInfoAdder.cs │ │ ├── InfoAdderManager.cs │ │ ├── InfoAdderPriority.cs │ │ ├── InnoSetupQuietUninstallStringGenerator.cs │ │ ├── InstallDateAdder.cs │ │ ├── InstallLocationGenerator.cs │ │ ├── Is64BitGetter.cs │ │ ├── KnownNameIconGetter.cs │ │ ├── MsiInfoAdder.cs │ │ ├── MsiUninstallStringGenerator.cs │ │ ├── NsisQuietUninstallStringGenerator.cs │ │ ├── PredefinedAppQuietUninstallStringGenerator.cs │ │ ├── QuietUninstallStringCopier.cs │ │ ├── SimpleDeleteUninstallStringGenerator.cs │ │ ├── UninstallerSearcher.cs │ │ ├── UninstallerTypeAdder.cs │ │ ├── VersionCleaner.cs │ │ └── WebBrowserMarker.cs │ ├── Json │ │ ├── DynamicStringArrayConverter.cs │ │ └── PowerShellDateTimeOffsetConverter.cs │ ├── OculusFactory.cs │ ├── PredefinedFactory.cs │ ├── RegistryFactory.cs │ ├── ScoopFactory.cs │ ├── ScriptFactory.cs │ ├── SteamFactory.cs │ ├── StoreAppFactory.cs │ ├── WindowsFeatureFactory.cs │ └── WindowsUpdateFactory.cs ├── Junk │ ├── Confidence │ │ ├── ConfidenceCollection.cs │ │ ├── ConfidenceGenerators.cs │ │ ├── ConfidenceLevel.cs │ │ ├── ConfidenceRecord.cs │ │ └── ConfidenceRecords.cs │ ├── Containers │ │ ├── FileSystemJunk.cs │ │ ├── IJunkResult.cs │ │ ├── JunkResultBase.cs │ │ ├── RegistryKeyJunk.cs │ │ ├── RegistryValueJunk.cs │ │ ├── RunProcessJunk.cs │ │ └── StartupJunkNode.cs │ ├── Finders │ │ ├── Drive │ │ │ ├── CommonDriveJunkScanner.cs │ │ │ ├── InstallLocationScanner.cs │ │ │ ├── PrefetchScanner.cs │ │ │ ├── SpecificUninstallerKindScanner.cs │ │ │ ├── UninstallerLocationScanner.cs │ │ │ └── WerScanner.cs │ │ ├── JunkCreatorBase.cs │ │ ├── Misc │ │ │ ├── ShortcutJunk.cs │ │ │ └── StartupJunk.cs │ │ └── Registry │ │ │ ├── AppCompatFlagScanner.cs │ │ │ ├── AudioPolicyConfigScanner.cs │ │ │ ├── ComScanner.cs │ │ │ ├── DebugTracingScanner.cs │ │ │ ├── EventLogScanner.cs │ │ │ ├── FirewallRuleScanner.cs │ │ │ ├── HeapLeakDetectionScanner.cs │ │ │ ├── InstallerFoldersScanner.cs │ │ │ ├── RegisteredApplicationsFinder.cs │ │ │ ├── SoftwareRegKeyScanner.cs │ │ │ ├── TracingScanner.cs │ │ │ ├── UninstallerKeySearcher.cs │ │ │ └── UserAssistScanner.cs │ ├── IJunkCreator.cs │ ├── JunkManager.cs │ └── ProgramFilesOrphans.cs ├── ListGenerationProgress.cs ├── Lists │ ├── ComparisonMethod.cs │ ├── ComparisonTargetAttribute.cs │ ├── ComparisonTargetInfo.cs │ ├── Filter.cs │ ├── FilterCondition.cs │ ├── ITestEntry.cs │ └── UninstallList.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Localisation.Designer.cs │ ├── Localisation.ar.resx │ ├── Localisation.cs.resx │ ├── Localisation.de.resx │ ├── Localisation.es.resx │ ├── Localisation.fr.resx │ ├── Localisation.hu.resx │ ├── Localisation.it.resx │ ├── Localisation.ja.resx │ ├── Localisation.nl.resx │ ├── Localisation.pl.resx │ ├── Localisation.pt-BR.resx │ ├── Localisation.pt.resx │ ├── Localisation.resx │ ├── Localisation.ru.resx │ ├── Localisation.sl.resx │ ├── Localisation.sv.resx │ ├── Localisation.tr.resx │ ├── Localisation.vi.resx │ ├── Localisation.zh-Hans.resx │ ├── Localisation.zh-Hant.resx │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ ├── Resources.Designer.cs │ └── Resources.resx ├── Resources │ ├── add.png │ ├── app.png │ ├── arrow.right.png │ ├── delete.png │ ├── folder.open.png │ ├── link.png │ ├── minus.png │ ├── page.copy.png │ └── page.duplicate.png ├── SimplifiedClassDiagram.cd ├── Startup │ ├── Browser │ │ ├── BrowserEntryFactory.cs │ │ └── BrowserHelperEntry.cs │ ├── Normal │ │ ├── IStartupDisable.cs │ │ ├── NewStartupDisable.cs │ │ ├── OldStartupDisable.cs │ │ ├── StartupEntry.cs │ │ ├── StartupEntryFactory.cs │ │ ├── StartupEntryManager.cs │ │ └── StartupPointData.cs │ ├── Service │ │ ├── ServiceEntry.cs │ │ └── ServiceEntryFactory.cs │ ├── StartupEntryBase.cs │ ├── StartupManager.cs │ └── Task │ │ ├── TaskEntry.cs │ │ └── TaskEntryFactory.cs ├── ThreadedWorkSpreader.cs ├── UninstallTools.csproj ├── UninstallToolsGlobalConfig.cs ├── Uninstaller │ ├── BulkUninstallConfiguration.cs │ ├── BulkUninstallEntry.cs │ ├── BulkUninstallTask.cs │ ├── MsiUninstallModes.cs │ ├── UninstallManager.cs │ └── UninstallStatus.cs └── UninstallerType.cs ├── UninstallerAutomatizer ├── Automation │ ├── AutomatedUninstallManager.cs │ ├── UninstallHandler.cs │ ├── UninstallHandlerUpdateArgs.cs │ └── UninstallHandlerUpdateKind.cs ├── Extensions │ ├── TestStackWhiteExtensions.cs │ └── WindowExtensions.cs ├── Forms │ ├── MainWindow.Designer.cs │ ├── MainWindow.ar.resx │ ├── MainWindow.cs │ ├── MainWindow.cs.resx │ ├── MainWindow.de.resx │ ├── MainWindow.es.resx │ ├── MainWindow.fr.resx │ ├── MainWindow.hu.resx │ ├── MainWindow.it.resx │ ├── MainWindow.ja.resx │ ├── MainWindow.nl.resx │ ├── MainWindow.pl.resx │ ├── MainWindow.pt-BR.resx │ ├── MainWindow.pt.resx │ ├── MainWindow.resx │ ├── MainWindow.ru.resx │ ├── MainWindow.sl.resx │ ├── MainWindow.sv.resx │ ├── MainWindow.tr.resx │ ├── MainWindow.vi.resx │ ├── MainWindow.zh-Hans.resx │ └── MainWindow.zh-Hant.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Localization.Designer.cs │ ├── Localization.ar.resx │ ├── Localization.cs.resx │ ├── Localization.de.resx │ ├── Localization.es.resx │ ├── Localization.fr.resx │ ├── Localization.it.resx │ ├── Localization.ja.resx │ ├── Localization.nl.resx │ ├── Localization.pl.resx │ ├── Localization.pt-BR.resx │ ├── Localization.pt.resx │ ├── Localization.resx │ ├── Localization.ru.resx │ ├── Localization.sl.resx │ ├── Localization.sv.resx │ ├── Localization.tr.resx │ ├── Localization.vi.resx │ ├── Localization.zh-Hans.resx │ ├── Localization.zh-Hant.resx │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── app.manifest ├── UninstallerAutomatizer.csproj └── icon.ico ├── UniversalUninstaller ├── LogWriter.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Localisation.Designer.cs │ ├── Localisation.ar.resx │ ├── Localisation.cs.resx │ ├── Localisation.de.resx │ ├── Localisation.es.resx │ ├── Localisation.fr.resx │ ├── Localisation.hu.resx │ ├── Localisation.it.resx │ ├── Localisation.ja.resx │ ├── Localisation.nl.resx │ ├── Localisation.pl.resx │ ├── Localisation.pt-BR.resx │ ├── Localisation.pt.resx │ ├── Localisation.resx │ ├── Localisation.ru.resx │ ├── Localisation.sl.resx │ ├── Localisation.sv.resx │ ├── Localisation.tr.resx │ ├── Localisation.vi.resx │ ├── Localisation.zh-Hans.resx │ ├── Localisation.zh-Hant.resx │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ ├── Settings.settings │ └── app.manifest ├── Resources │ ├── Folder_48x48.png │ ├── Generic_Application.png │ ├── Generic_Document.png │ ├── app.png │ ├── folder.png │ ├── icon.png │ ├── page.text.png │ ├── section.collapse.all.png │ ├── section.collapse.all1.png │ ├── section.expand.all.png │ └── section.expand.all1.png ├── TargetList.Designer.cs ├── TargetList.ar.resx ├── TargetList.cs ├── TargetList.cs.resx ├── TargetList.de.resx ├── TargetList.es.resx ├── TargetList.fr.resx ├── TargetList.hu.resx ├── TargetList.it.resx ├── TargetList.ja.resx ├── TargetList.nl.resx ├── TargetList.pl.resx ├── TargetList.pt-BR.resx ├── TargetList.pt.resx ├── TargetList.resx ├── TargetList.ru.resx ├── TargetList.sl.resx ├── TargetList.sv.resx ├── TargetList.tr.resx ├── TargetList.vi.resx ├── TargetList.zh-Hans.resx ├── TargetList.zh-Hant.resx ├── TreeEntry.cs ├── UninstallSelection.Designer.cs ├── UninstallSelection.ar.resx ├── UninstallSelection.cs ├── UninstallSelection.cs.resx ├── UninstallSelection.de.resx ├── UninstallSelection.es.resx ├── UninstallSelection.fr.resx ├── UninstallSelection.hu.resx ├── UninstallSelection.it.resx ├── UninstallSelection.ja.resx ├── UninstallSelection.nl.resx ├── UninstallSelection.pl.resx ├── UninstallSelection.pt-BR.resx ├── UninstallSelection.pt.resx ├── UninstallSelection.resx ├── UninstallSelection.ru.resx ├── UninstallSelection.sl.resx ├── UninstallSelection.sv.resx ├── UninstallSelection.tr.resx ├── UninstallSelection.vi.resx ├── UninstallSelection.zh-Hans.resx ├── UninstallSelection.zh-Hant.resx ├── UniversalUninstaller.csproj └── UniversalUninstaller.ico ├── WinUpdateHelper ├── Hresult.cs ├── LogWriter.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── PublishProfiles │ │ └── FolderProfile.pubxml │ └── app.manifest ├── UpdateManager.cs ├── WinUpdateHelper.csproj └── icon.ico └── es.exe /.github/workflows/winget.yml: -------------------------------------------------------------------------------- 1 | name: Publish to WinGet 2 | on: 3 | release: 4 | types: [released] 5 | jobs: 6 | publish: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Get version 10 | id: get-version 11 | run: | 12 | # Find the version from tag name and pad to 4 components 13 | version=$(echo "${{ github.event.release.tag_name }}" | awk -F. '{printf "%d.%d.%d.%d\n", substr($1, 2), $2, $3, $4}') 14 | echo "version=$VERSION" >> $GITHUB_OUTPUT 15 | - uses: vedantmgoyal9/winget-releaser@main 16 | with: 17 | identifier: Klocman.BulkCrapUninstaller 18 | version: ${{ steps.get-version.outputs.version }} 19 | token: ${{ secrets.WINGET_TOKEN }} 20 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | - Don't be a d*ck to others 4 | - Don't be afraid to point out bad behavior 5 | - Do focus on making the project better 6 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Bulk Crap Uninstaller is a free open-source project hosted on GitHub. Marcin Szeniak is the project manager and lead developer. 2 | The official project is hosted at https://github.com/Klocman/Bulk-Crap-Uninstaller 3 | 4 | In case of issues, please update to the latest official release. Non-official releases are not supported. 5 | If the issue presists, please post a bug report to https://github.com/Klocman/Bulk-Crap-Uninstaller/issues 6 | 7 | If you wish to contribute, donate or otherwise help the project, please read the CONTRIBUTING file. 8 | https://github.com/Klocman/Bulk-Crap-Uninstaller/blob/master/CONTRIBUTING.md -------------------------------------------------------------------------------- /PrivacyPolicy.txt: -------------------------------------------------------------------------------- 1 | BCUninstaller by Marcin Szeniak collects the following information: 2 | - Anonymous usage statistics 3 | - Anonymous error reports 4 | - User-selected application ratings 5 | 6 | All collected information is not personally identifiable, and does not include any sensitive information. 7 | 8 | During first start of BCU an user ID is generated to help keep track of application ratings and usage statistics. It can be freely changed and is not guaranteed to be unique. 9 | 10 | Marcin Szeniak collects this information in order to provide the following benefits: 11 | - Improve BCUninstaller 12 | - Provide overall application ratings 13 | - Help plan future features and/or applications 14 | 15 | Marcin Szeniak shares this information with the following parties: 16 | - No one 17 | 18 | User-selected application ratings are used to generate overall application ratings, which are visible to all users. 19 | 20 | This policy is subject to change without notice. Please check this page for the latest privacy policy. If you disagree with this policy, please discontinue use of the application. -------------------------------------------------------------------------------- /doc/BCU_manual.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/doc/BCU_manual.odt -------------------------------------------------------------------------------- /doc/Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/doc/Preview.png -------------------------------------------------------------------------------- /doc/SimplifiedClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/doc/SimplifiedClassDiagram.png -------------------------------------------------------------------------------- /installer/.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore for InnoSetup 2 | 3 | [Ii]nput 4 | [Oo]utput 5 | *.tmp -------------------------------------------------------------------------------- /installer/bigImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/bigImage.bmp -------------------------------------------------------------------------------- /installer/bigImage.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/bigImage.pdn -------------------------------------------------------------------------------- /installer/lang/Hungarian.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/lang/Hungarian.isl -------------------------------------------------------------------------------- /installer/lang/Turkish.isl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/lang/Turkish.isl -------------------------------------------------------------------------------- /installer/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/logo.ico -------------------------------------------------------------------------------- /installer/scripts/PortableIcons.iss: -------------------------------------------------------------------------------- 1 | [Tasks] 2 | Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; Check: IsNotPortable; GroupDescription: "{cm:AdditionalIcons}" 3 | Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; Check: IsNotPortable; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked 4 | 5 | [Icons] 6 | Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Check: IsNotPortable; 7 | Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Check: IsNotPortable; 8 | Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon; Check: IsNotPortable; 9 | Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon; Check: IsNotPortable; -------------------------------------------------------------------------------- /installer/scripts/isxdl/Hindi.ini: -------------------------------------------------------------------------------- 1 | [strings] 2 | ; General 3 | 100=फ़ाइल डाउनलोड 4 | 101=क्या आप डाउनलोड रद्द करना चाहते हैं? 5 | 102=%1 (%2 में से %3) 6 | 103=%1 KB 7 | 104=%1 KB में से %2 KB (%3%) 8 | 9 | ; Status information 10 | 110=फ़ाइल जानकारी प्राप्त की जा रही है... 11 | 111=%1 पर पुनर्निर्देशित किया जा रहा है 12 | 112=अनुरोध भेजा जा रहा है... 13 | 113=%1 का समाधान किया जा रहा है 14 | 114=%1 से कनेक्ट किया गया 15 | 115=प्राप्त किया जा रहा है... 16 | 116=%1 से कनेक्ट किया जा रहा है... 17 | 18 | ; Error messages 19 | 120=इंटरनेट से कनेक्ट करते समय त्रुटि हुई।\n\n%1 20 | 121=%1 खोलते समय त्रुटि हुई।\n\nसर्वर ने स्थिति कोड %2 लौटाया। 21 | 122=URL पढ़ते समय त्रुटि हुई।\n\n%1 22 | 123=फ़ाइल %1 लिखते समय त्रुटि हुई।\n\n%2 23 | 124=फ़ाइल %1 खोलते समय त्रुटि हुई।\n\n%2 24 | 125='%1' अमान्य URL है। 25 | 126=%1 खोलते समय त्रुटि हुई।\n\n%2 26 | 127=अनुरोध भेजते समय त्रुटि हुई।\n\n%1 27 | 128=असमर्थित प्रोटोकॉल। केवल HTTP और FTP प्रोटोकॉल समर्थित हैं। 28 | 129=%1 से कनेक्ट करने में विफल।\n\n%2 29 | 130=स्थिति कोड क्वेरी करने में विफल।\n\n%1 30 | 131=फ़ाइल अनुरोध करते समय त्रुटि हुई।\n\n%1 31 | 32 | ; Other 33 | 144=बारे में... 34 | 146=डाउनलोड 35 | 147=सेटअप अब आपके कंप्यूटर पर अतिरिक्त फाइलें डाउनलोड कर रहा है। 36 | 37 | ; labels 38 | 160=फ़ाइल: 39 | 161=गति: 40 | 162=स्थिति: 41 | 163=बीता हुआ समय: 42 | 164=शेष समय: 43 | 165=वर्तमान फ़ाइल: 44 | 166=कुल प्रगति: 45 | 167=रद्द करें 46 | 168=ठीक है 47 | 169=उपयोगकर्ता नाम और पासवर्ड 48 | 170=उपयोगकर्ता नाम: 49 | 171=पासवर्ड: 50 | -------------------------------------------------------------------------------- /installer/scripts/isxdl/Turkish.ini: -------------------------------------------------------------------------------- 1 | [strings] 2 | ; General 3 | 100=Dosya İndirme 4 | 101=İndirmeyi iptal etmek istiyor musunuz? 5 | 102=%1 (%2 / %3) 6 | 103=%1 KB 7 | 104=%1 KB / %2 KB (%3%) 8 | 9 | ; Status information 10 | 110=Dosya bilgileri alınıyor... 11 | 111=%1'e yönlendiriliyor 12 | 112=İstek gönderiliyor... 13 | 113=%1 çözümleniyor 14 | 114=%1'e bağlanıldı 15 | 115=Alınıyor... 16 | 116=%1'e bağlanılıyor 17 | 18 | ; Error messages 19 | 120=İnternete bağlanırken hata oluştu.\n\n%1 20 | 121=Hata %1 açılırken.\n\nServer bu kodu dödürdü %2. 21 | 122=URL'yi okurken hata.\n\n%1 22 | 123=Bu dosyaya yazarken hata %1.\n\n%2 23 | 124=Bu dosyayı açarken hata %1.\n\n%2 24 | 125='%1' geçersiz URL. 25 | 126=%1' açılamıyor.\n\n%2 26 | 127=İstek gönderilemiyor.\n\n%1 27 | 128=Desteklenmeyen protokol. Yalnızca HTTP ve FTP protokolleri desteklenir. 28 | 129=%1'e bağlanılamıyor.\n\n%2 29 | 130=Durum kodu sorgulanamadı.\n\n%1 30 | 131=Dosya istenirken hata.\n\n%1 31 | 32 | ; Other 33 | 144=Hakkında... 34 | 146=İndir 35 | 147=Kurulum için bilgisayarınıza ek dosyalar indiriyor. 36 | 37 | ; labels 38 | 160=Dosya: 39 | 161=Hız: 40 | 162=Durum: 41 | 163=Geçen Zaman: 42 | 164=Kalan Zaman: 43 | 165=Şimdiki dosya: 44 | 166=Genel İlerleme: 45 | 167=İptal 46 | 168=Tamam 47 | 169=Kullanıcı Adı ve Şifre 48 | 170=Kullanıcı Adı: 49 | 171=Şifre: 50 | -------------------------------------------------------------------------------- /installer/scripts/isxdl/chinese.ini: -------------------------------------------------------------------------------- 1 | [strings] 2 | ; General 3 | 100=文件下载 4 | 101=您想取消下载吗? 5 | 102=%1 (%2 / %3) 6 | 103=%1 KB 7 | 104=%1 KB / %2 KB (%3%) 8 | 9 | ; Status information 10 | 110=获取文件信息中... 11 | 111=重定向至 %1 12 | 112=发送请求... 13 | 113=解决 %1 14 | 114=成功连接至 %1 15 | 115=接收中... 16 | 116=正在连接至 %1 17 | 18 | ; Error messages 19 | 120=连接互联网出错\n\n%1 20 | 121=打开 %1 时出错。\n\n服务器返回状态码 %2. 21 | 122=读取链接出错。\n\n%1 22 | 123=写入文件 %1 时出错。\n\n%2 23 | 124=打开文件 %1 时出错。\n\n%2 24 | 125=网址 '%1' 无效。 25 | 126=打开 %1 时出错。\n\n%2 26 | 127=发送请求时出错。\n\n%1 27 | 128=不支持协议。仅支持 HTTP 和 FTP 协议。 28 | 129=连接 %1 时出错。\n\n%2 29 | 130=查询状态代码失败。\n\n%1 30 | 131=请求文件时出错。\n\n%1 31 | 32 | ; Other 33 | 144=关于... 34 | 146=下载 35 | 147=安装程序正在向您的计算机下载其他文件。 36 | 37 | ; labels 38 | 160=文件: 39 | 161=速度: 40 | 162=状态: 41 | 163=耗时: 42 | 164=剩余时间: 43 | 165=当前文件: 44 | 166=总进度: 45 | 167=取消 46 | 168=确定 47 | 169=用户名和密码 48 | 170=用户名: 49 | 171=密码: 50 | -------------------------------------------------------------------------------- /installer/scripts/isxdl/czech.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/czech.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/english.ini: -------------------------------------------------------------------------------- 1 | [strings] 2 | ; General 3 | 100=File Download 4 | 101=Do you want to cancel the download? 5 | 102=%1 (%2 of %3) 6 | 103=%1 KB 7 | 104=%1 KB of %2 KB (%3%) 8 | 9 | ; Status information 10 | 110=Getting file information... 11 | 111=Redirecting to %1 12 | 112=Sending request... 13 | 113=Resolving %1 14 | 114=Connected to %1 15 | 115=Receiving... 16 | 116=Connecting to %1 17 | 18 | ; Error messages 19 | 120=Error connecting to Internet.\n\n%1 20 | 121=Error opening %1.\n\nThe server returned status code %2. 21 | 122=Error reading URL.\n\n%1 22 | 123=Error writing file %1.\n\n%2 23 | 124=Error opening file %1.\n\n%2 24 | 125='%1' is an invalid URL. 25 | 126=Error opening %1.\n\n%2 26 | 127=Error sending request.\n\n%1 27 | 128=Unsupported protocol. Only HTTP and FTP protocols are supported. 28 | 129=Failed to connect to %1.\n\n%2 29 | 130=Failed to query status code.\n\n%1 30 | 131=Error requesting file.\n\n%1 31 | 32 | ; Other 33 | 144=About... 34 | 146=Download 35 | 147=Setup is now downloading additional files to your computer. 36 | 37 | ; labels 38 | 160=File: 39 | 161=Speed: 40 | 162=Status: 41 | 163=Elapsed Time: 42 | 164=Remaining Time: 43 | 165=Current File: 44 | 166=Overall Progress: 45 | 167=Cancel 46 | 168=OK 47 | 169=User Name and Password 48 | 170=User Name: 49 | 171=Password: 50 | -------------------------------------------------------------------------------- /installer/scripts/isxdl/french.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/french.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/french2.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/french2.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/french3.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/french3.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/german.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/german.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/german2.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/german2.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/german3.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/german3.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/isxdl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/isxdl.dll -------------------------------------------------------------------------------- /installer/scripts/isxdl/isxdl.iss: -------------------------------------------------------------------------------- 1 | [Files] 2 | Source: "scripts\isxdl\isxdl.dll"; Flags: dontcopy 3 | 4 | [Code] 5 | procedure isxdl_AddFile(URL, Filename: PAnsiChar); 6 | external 'isxdl_AddFile@files:isxdl.dll stdcall'; 7 | 8 | function isxdl_DownloadFiles(hWnd: Integer): Integer; 9 | external 'isxdl_DownloadFiles@files:isxdl.dll stdcall'; 10 | 11 | function isxdl_SetOption(Option, Value: PAnsiChar): Integer; 12 | external 'isxdl_SetOption@files:isxdl.dll stdcall'; 13 | -------------------------------------------------------------------------------- /installer/scripts/isxdl/norwegian.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/norwegian.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/polish.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/polish.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/portugues.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/portugues.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/portuguese.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/portuguese.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/russian.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/russian.ini -------------------------------------------------------------------------------- /installer/scripts/isxdl/spanish.ini: -------------------------------------------------------------------------------- 1 | ; By Lobo Lunar 2 | [strings] 3 | ; General 4 | 100=Descargar 5 | 101=¿Deseas cancelar la descarga? 6 | 102=%1 (%2 de %3) 7 | 103=%1 KB 8 | 104=%1 KB de %2 KB (%3%) 9 | 10 | ; Status information 11 | 110=Recibiendo información del archivo... 12 | 111=Redireccionando a %1 13 | 112=Enviando petición... 14 | 113=Resolviendo %1 15 | 114=Conectando a %1 16 | 115=Descargando... 17 | 116=Conectando a %1 18 | 19 | ; Error messages 20 | 120=Error al conectar a Internet.\n\n%1 21 | 121=Error al abrir %1.\n\nEl servidor regresó %2. 22 | 122=Error al leer URL.\n\n%1 23 | 123=Error al escribir el archivo %1.\n\n%2 24 | 124=Error al abrir el archivo %1.\n\n%2 25 | 125='%1' es URL inválido. 26 | 126=Error al abrir %1.\n\n%2 27 | 127=Error al mandar la petición.\n\n%1 28 | 128=Error de protocolo. Sólo HTTP o FTP son aceptados. 29 | 129=Error al conectar a %1.\n\n%2 30 | 130=Error al procesar el código.\n\n%1 31 | 131=Error al buscar el archivo.\n\n%1 32 | 33 | ; Other 34 | 144=Acerca de... 35 | 146=Descargar 36 | 147=El asistente está descargando archivos. 37 | 38 | ; labels 39 | 160=Archivo: 40 | 161=Velocidad: 41 | 162=Estado: 42 | 163=Tiempo transcurrido: 43 | 164=Tiempo estimado: 44 | 165=Archivo actual: 45 | 166=Progreso general: 46 | 167=Cancelar 47 | 168=Aceptar 48 | 169=Usuario y contraseña 49 | 170=Usuario: 50 | 171=Contraseña: 51 | -------------------------------------------------------------------------------- /installer/scripts/isxdl/swedish.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/scripts/isxdl/swedish.ini -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx11.iss: -------------------------------------------------------------------------------- 1 | // requires Windows 2000; Windows Server 2003 Service Pack 1 for Itanium-based Systems; Windows Server 2003 x64 editions; Windows Server 2008 Datacenter; Windows Server 2008 Enterprise; Windows Server 2008 for Itanium-based Systems; Windows Server 2008 Standard; Windows Vista Business; Windows Vista Enterprise; Windows Vista Home Basic; Windows Vista Home Premium; Windows Vista Starter; Windows Vista Ultimate; Windows XP; Windows XP Professional x64 Edition; Windows NT 4.0 Service Pack 6a 2 | // requires internet explorer 5.0.1 or higher 3 | // http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3 4 | 5 | [CustomMessages] 6 | dotnetfx11_title=.NET Framework 1.1 7 | 8 | en.dotnetfx11_size=23.1 MB 9 | de.dotnetfx11_size=23,1 MB 10 | es.dotnetfx11_size=23,1 MB 11 | 12 | 13 | [Code] 14 | const 15 | dotnetfx11_url = 'http://download.microsoft.com/download/a/a/c/aac39226-8825-44ce-90e3-bf8203e74006/dotnetfx.exe'; 16 | 17 | procedure dotnetfx11(); 18 | begin 19 | if (IsX86() and not netfxinstalled(NetFx11, '')) then 20 | AddProduct('dotnetfx11.exe', 21 | '/q:a /c:"install /qb /l"', 22 | CustomMessage('dotnetfx11_title'), 23 | CustomMessage('dotnetfx11_size'), 24 | dotnetfx11_url, 25 | false, false); 26 | end; 27 | -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx11lp.iss: -------------------------------------------------------------------------------- 1 | [CustomMessages] 2 | de.dotnetfx11lp_title=.NET Framework 1.1 Sprachpaket: Deutsch 3 | es.dotnetfx11lp_title=.NET Framework 1.1 paquete de idioma: Español 4 | 5 | de.dotnetfx11lp_size=1,4 MB 6 | es.dotnetfx11lp_size=1,38 MB 7 | 8 | ;http://www.microsoft.com/globaldev/reference/lcid-all.mspx 9 | de.dotnetfx11lp_lcid=1031 10 | es.dotnetfx11lp_lcid=3082 11 | 12 | de.dotnetfx11lp_url=http://download.microsoft.com/download/6/8/2/6821e687-526a-4ef8-9a67-9a402ec5ac9e/langpack.exe 13 | es.dotnetfx11lp_url=http://download.microsoft.com/download/2/a/3/2a33623b-d870-46e5-8703-3d61413b559f/langpack.exe 14 | 15 | 16 | [Code] 17 | procedure dotnetfx11lp(); 18 | begin 19 | if (ActiveLanguage() <> 'en') then begin 20 | if (IsX86() and not netfxinstalled(NetFx11, CustomMessage('dotnetfx11lp_lcid'))) then 21 | AddProduct('dotnetfx11' + ActiveLanguage() + '.exe', 22 | '/q:a /c:"inst.exe /qb /l"', 23 | CustomMessage('dotnetfx11lp_title'), 24 | CustomMessage('dotnetfx11lp_size'), 25 | CustomMessage('dotnetfx11lp_url'), 26 | false, false); 27 | end; 28 | end; 29 | -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx20.iss: -------------------------------------------------------------------------------- 1 | // requires Windows 2000 Service Pack 3, Windows 98, Windows 98 Second Edition, Windows ME, Windows Server 2003, Windows XP Service Pack 2 2 | // requires internet explorer 5.0.1 or higher 3 | // requires windows installer 2.0 on windows 98, ME 4 | // requires Windows Installer 3.1 on windows 2000 or higher 5 | // http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5 6 | 7 | [CustomMessages] 8 | dotnetfx20_title=.NET Framework 2.0 9 | 10 | dotnetfx20_size=23 MB 11 | es.dotnetfx20_size=23 MB 12 | 13 | 14 | [Code] 15 | const 16 | dotnetfx20_url = 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe'; 17 | dotnetfx20_url_x64 = 'http://download.microsoft.com/download/a/3/f/a3f1bf98-18f3-4036-9b68-8e6de530ce0a/NetFx64.exe'; 18 | dotnetfx20_url_ia64 = 'http://download.microsoft.com/download/f/8/6/f86148a4-e8f7-4d08-a484-b4107f238728/NetFx64.exe'; 19 | 20 | procedure dotnetfx20(); 21 | begin 22 | if (not netfxinstalled(NetFx20, '')) then 23 | AddProduct('dotnetfx20' + GetArchitectureString() + '.exe', 24 | '/passive /norestart /lang:ENU', 25 | CustomMessage('dotnetfx20_title'), 26 | CustomMessage('dotnetfx20_size'), 27 | GetString(dotnetfx20_url, dotnetfx20_url_x64, dotnetfx20_url_ia64), 28 | false, false); 29 | end; 30 | -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx20sp1.iss: -------------------------------------------------------------------------------- 1 | // requires Windows 2000 Service Pack 4, Windows Server 2003, Windows XP Service Pack 2 2 | // requires KB 835732 on Windows 2000 Service Pack 4 3 | // http://www.microsoft.com/downloads/details.aspx?FamilyID=79bc3b77-e02c-4ad3-aacf-a7633f706ba5 4 | 5 | [CustomMessages] 6 | dotnetfx20sp1_title=.NET Framework 2.0 Service Pack 1 7 | 8 | en.dotnetfx20sp1_size=23.6 MB 9 | de.dotnetfx20sp1_size=23,6 MB 10 | es.dotnetfx20sp1_size=23,6 MB 11 | 12 | 13 | [Code] 14 | const 15 | dotnetfx20sp1_url = 'http://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe'; 16 | dotnetfx20sp1_url_x64 = 'http://download.microsoft.com/download/9/8/6/98610406-c2b7-45a4-bdc3-9db1b1c5f7e2/NetFx20SP1_x64.exe'; 17 | dotnetfx20sp1_url_ia64 = 'http://download.microsoft.com/download/c/9/7/c97d534b-8a55-495d-ab06-ad56f4b7f155/NetFx20SP1_ia64.exe'; 18 | 19 | procedure dotnetfx20sp1(); 20 | begin 21 | if (netfxspversion(NetFx20, '') < 1) then 22 | AddProduct('dotnetfx20sp1' + GetArchitectureString() + '.exe', 23 | '/passive /norestart /lang:ENU', 24 | CustomMessage('dotnetfx20sp1_title'), 25 | CustomMessage('dotnetfx20sp1_size'), 26 | GetString(dotnetfx20sp1_url, dotnetfx20sp1_url_x64, dotnetfx20sp1_url_ia64), 27 | false, false); 28 | end; 29 | -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx20sp2.iss: -------------------------------------------------------------------------------- 1 | //http://www.microsoft.com/downloads/details.aspx?familyid=5B2C0358-915B-4EB5-9B1D-10E506DA9D0F 2 | 3 | [CustomMessages] 4 | dotnetfx20sp2_title=.NET Framework 2.0 Service Pack 2 5 | 6 | en.dotnetfx20sp2_size=24 MB - 52 MB 7 | de.dotnetfx20sp2_size=24 MB - 52 MB 8 | es.dotnetfx20sp2_size=24 MB - 52 MB 9 | 10 | 11 | [Code] 12 | const 13 | dotnetfx20sp2_url = 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x86.exe'; 14 | dotnetfx20sp2_url_x64 = 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_x64.exe'; 15 | dotnetfx20sp2_url_ia64 = 'http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b5f3-158ff77b1f38/NetFx20SP2_ia64.exe'; 16 | 17 | procedure dotnetfx20sp2(); 18 | begin 19 | if (netfxspversion(NetFx20, '') < 2) then 20 | AddProduct('dotnetfx20sp2' + GetArchitectureString() + '.exe', 21 | '/passive /norestart /lang:ENU', 22 | CustomMessage('dotnetfx20sp2_title'), 23 | CustomMessage('dotnetfx20sp2_size'), 24 | GetString(dotnetfx20sp2_url, dotnetfx20sp2_url_x64, dotnetfx20sp2_url_ia64), 25 | false, false); 26 | end; 27 | -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx35.iss: -------------------------------------------------------------------------------- 1 | // requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2 2 | // requires Windows Installer 3.1 3 | // WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below 4 | // http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6 5 | 6 | [CustomMessages] 7 | dotnetfx35_title=.NET Framework 3.5 8 | 9 | dotnetfx35_size=3 MB - 197 MB 10 | fr.dotnetfx35_size=3 Mo - 197 Mo 11 | es.dotnetfx35_size=3 MB - 197 MB 12 | 13 | [Code] 14 | const 15 | dotnetfx35_url = 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe'; 16 | 17 | procedure dotnetfx35(); 18 | begin 19 | if (netfxinstalled(NetFx35, '') = false) then 20 | AddProduct('dotnetfx35.exe', 21 | '/lang:enu /passive /norestart', 22 | CustomMessage('dotnetfx35_title'), 23 | CustomMessage('dotnetfx35_size'), 24 | dotnetfx35_url, 25 | false, false); 26 | end; 27 | -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx35sp1.iss: -------------------------------------------------------------------------------- 1 | // requires Windows Server 2003 Service Pack 1, Windows Server 2008, Windows Vista, Windows XP Service Pack 2 2 | // requires Windows Installer 3.1 3 | // WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below 4 | // http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7 5 | 6 | [CustomMessages] 7 | dotnetfx35sp1_title=.NET Framework 3.5 Service Pack 1 8 | 9 | dotnetfx35sp1_size=3 MB - 232 MB 10 | fr.dotnetfx35sp1_size=3 Mo - 232 Mo 11 | es.dotnetfx35sp1_size=3 MB - 232 MB 12 | 13 | 14 | [Code] 15 | const 16 | dotnetfx35sp1_url = 'http://download.microsoft.com/download/0/6/1/061f001c-8752-4600-a198-53214c69b51f/dotnetfx35setup.exe'; 17 | 18 | procedure dotnetfx35sp1(); 19 | begin 20 | if (netfxspversion(NetFx35, '') < 1) then 21 | AddProduct('dotnetfx35sp1.exe', 22 | '/lang:enu /passive /norestart', 23 | CustomMessage('dotnetfx35sp1_title'), 24 | CustomMessage('dotnetfx35sp1_size'), 25 | dotnetfx35sp1_url, 26 | false, false); 27 | end; 28 | -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx35sp1lp.iss: -------------------------------------------------------------------------------- 1 | 2 | 3 | [Code] 4 | procedure dotnetfx35sp1lp(); 5 | begin 6 | if (ActiveLanguage() <> 'en') then begin 7 | if (netfxspversion(NetFx35, CustomMessage('dotnetfx35sp1lp_lcid')) < 1) then 8 | AddProduct('dotnetfx35sp1_' + ActiveLanguage() + '.exe', 9 | '/lang:enu /passive /norestart', 10 | CustomMessage('dotnetfx35sp1lp_title'), 11 | CustomMessage('dotnetfx35sp1lp_size'), 12 | CustomMessage('dotnetfx35sp1lp_url'), 13 | false, false); 14 | end; 15 | end; -------------------------------------------------------------------------------- /installer/scripts/products/dotnetfx45.iss: -------------------------------------------------------------------------------- 1 | // requires Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Server 2012 R2, Windows Vista Service Pack 2 2 | // WARNING: express setup (downloads and installs the components depending on your OS) if you want to deploy it on cd or network download the full bootsrapper on website below 3 | // http://www.microsoft.com/en-us/download/details.aspx?id=42642 4 | 5 | [CustomMessages] 6 | dotnetfx45_title=.NET Framework 4.5.2 7 | 8 | dotnetfx45_size=1 MB - 68 MB 9 | 10 | ;http://www.microsoft.com/globaldev/reference/lcid-all.mspx 11 | en.dotnetfx45_lcid=1033 12 | de.dotnetfx45_lcid=1031 13 | es.dotnetfx45_lcid=3082 14 | 15 | 16 | [Code] 17 | const 18 | dotnetfx45_url = 'http://download.microsoft.com/download/B/4/1/B4119C11-0423-477B-80EE-7A474314B347/NDP452-KB2901954-Web.exe'; 19 | 20 | procedure dotnetfx45(MinVersion: integer); 21 | begin 22 | if (not netfxinstalled(NetFx45, '') or (netfxspversion(NetFx45, '') < MinVersion)) then 23 | AddProduct('dotnetfx45.exe', 24 | CustomMessage('dotnetfx45_lcid') + ' /q /passive /norestart', 25 | CustomMessage('dotnetfx45_title'), 26 | CustomMessage('dotnetfx45_size'), 27 | dotnetfx45_url, 28 | false, false); 29 | end; 30 | -------------------------------------------------------------------------------- /installer/scripts/products/fileversion.iss: -------------------------------------------------------------------------------- 1 | [Code] 2 | function GetFullVersion(VersionMS, VersionLS: cardinal): string; 3 | var 4 | version: string; 5 | begin 6 | version := IntToStr(word(VersionMS shr 16)); 7 | version := version + '.' + IntToStr(word(VersionMS and not $ffff0000)); 8 | 9 | version := version + '.' + IntToStr(word(VersionLS shr 16)); 10 | version := version + '.' + IntToStr(word(VersionLS and not $ffff0000)); 11 | 12 | Result := version; 13 | end; 14 | 15 | function fileversion(file: string): string; 16 | var 17 | versionMS, versionLS: cardinal; 18 | begin 19 | if GetVersionNumbers(file, versionMS, versionLS) then 20 | Result := GetFullVersion(versionMS, versionLS) 21 | else 22 | Result := '0'; 23 | end; 24 | -------------------------------------------------------------------------------- /installer/scripts/products/ie6.iss: -------------------------------------------------------------------------------- 1 | // requires Windows 2000; Windows 98; Windows ME; Windows NT; Windows XP Service Pack 1 2 | // WARNING: express setup (downloads and installs the components depending on your OS) 3 | // http://www.microsoft.com/downloads/details.aspx?familyid=1E1550CB-5E5D-48F5-B02B-20B602228DE6 4 | 5 | [CustomMessages] 6 | ie6_title=Internet Explorer 6 7 | 8 | en.ie6_size=1 MB - 77.5 MB 9 | de.ie6_size=1 MB - 77,5 MB 10 | es.ie6_size=1 MB - 77,5 MB 11 | 12 | 13 | [Code] 14 | const 15 | ie6_url = 'http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP/EN-US/ie6setup.exe'; 16 | 17 | procedure ie6(MinVersion: string); 18 | var 19 | version: string; 20 | begin 21 | RegQueryStringValue(HKLM, 'Software\Microsoft\Internet Explorer', 'Version', version); 22 | if (compareversion(version, MinVersion) < 0) then 23 | AddProduct('ie6.exe', 24 | '/q:a /C:"setup /QNT"', 25 | CustomMessage('ie6_title'), 26 | CustomMessage('ie6_size'), 27 | ie6_url, 28 | false, false); 29 | end; 30 | -------------------------------------------------------------------------------- /installer/scripts/products/iis.iss: -------------------------------------------------------------------------------- 1 | [CustomMessages] 2 | iis_title=Internet Information Services (IIS) 3 | 4 | 5 | [Code] 6 | function iis(): boolean; 7 | begin 8 | if (not RegKeyExists(HKLM, 'SYSTEM\CurrentControlSet\Services\W3SVC\Security')) then 9 | MsgBox(FmtMessage(CustomMessage('depinstall_missing'), [CustomMessage('iis_title')]), mbError, MB_OK) 10 | else 11 | Result := true; 12 | end; -------------------------------------------------------------------------------- /installer/scripts/products/jet4sp8.iss: -------------------------------------------------------------------------------- 1 | // http://support.microsoft.com/kb/239114 2 | 3 | [CustomMessages] 4 | jet4sp8_title=Jet 4 5 | 6 | en.jet4sp8_size=3.7 MB 7 | de.jet4sp8_size=3,7 MB 8 | es.jet4sp8_size=3,7 MB 9 | 10 | 11 | [Code] 12 | const 13 | jet4sp8_url = 'http://download.microsoft.com/download/4/3/9/4393c9ac-e69e-458d-9f6d-2fe191c51469/Jet40SP8_9xNT.exe'; 14 | 15 | procedure jet4sp8(MinVersion: string); 16 | begin 17 | //check for Jet4 Service Pack 8 installation 18 | if (compareversion(fileversion(ExpandConstant('{sys}{\}msjet40.dll')), MinVersion) < 0) then 19 | AddProduct('jet4sp8.exe', 20 | '/q:a /c:"install /qb /l"', 21 | CustomMessage('jet4sp8_title'), 22 | CustomMessage('jet4sp8_size'), 23 | jet4sp8_url, 24 | false, false); 25 | end; 26 | -------------------------------------------------------------------------------- /installer/scripts/products/kb835732.iss: -------------------------------------------------------------------------------- 1 | // required by .NET Framework 2.0 Service Pack 1 on Windows 2000 Service Pack 2-4 2 | // http://www.microsoft.com/technet/security/bulletin/ms04-011.mspx 3 | // http://www.microsoft.com/downloads/details.aspx?FamilyId=0692C27E-F63A-414C-B3EB-D2342FBB6C00 4 | 5 | [CustomMessages] 6 | en.kb835732_title=Windows 2000 Security Update (KB835732) 7 | de.kb835732_title=Windows 2000 Sicherheitsupdate (KB835732) 8 | es.kb835732_title=Actualización de seguridad para Windows 2000 (KB835732) 9 | 10 | en.kb835732_size=6.8 MB 11 | de.kb835732_size=6,8 MB 12 | es.kb835732_size=6,8 MB 13 | 14 | 15 | [Code] 16 | const 17 | kb835732_url = 'http://download.microsoft.com/download/f/a/a/faa796aa-399d-437a-9284-c3536e9f2e6e/Windows2000-KB835732-x86-ENU.EXE'; 18 | 19 | procedure kb835732(); 20 | begin 21 | if (exactwinversion(5, 0) and (minwinspversion(5, 0, 2) and maxwinspversion(5, 0, 4))) then begin 22 | if (not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Updates\Windows 2000\SP5\KB835732\Filelist')) then 23 | AddProduct('kb835732.exe', 24 | '/passive /norestart', 25 | CustomMessage('kb835732_title'), 26 | CustomMessage('kb835732_size'), 27 | kb835732_url, 28 | false, false); 29 | end; 30 | end; 31 | -------------------------------------------------------------------------------- /installer/scripts/products/mdac28.iss: -------------------------------------------------------------------------------- 1 | [CustomMessages] 2 | mdac28_title=Microsoft Data Access Components 2.8 3 | 4 | en.mdac28_size=5.4 MB 5 | de.mdac28_size=5,4 MB 6 | es.mdac28_size=5,4 MB 7 | 8 | 9 | [Code] 10 | const 11 | mdac28_url = 'http://download.microsoft.com/download/c/d/f/cdfd58f1-3973-4c51-8851-49ae3777586f/MDAC_TYP.EXE'; 12 | 13 | procedure mdac28(MinVersion: string); 14 | var 15 | version: string; 16 | begin 17 | //check for MDAC installation 18 | RegQueryStringValue(HKLM, 'Software\Microsoft\DataAccess', 'FullInstallVer', version); 19 | if (compareversion(version, MinVersion) < 0) then 20 | AddProduct('mdac28.exe', 21 | '/q:a /c:"install /qb /l"', 22 | CustomMessage('mdac28_title'), 23 | CustomMessage('mdac28_size'), 24 | mdac28_url, 25 | false, false); 26 | end; 27 | -------------------------------------------------------------------------------- /installer/scripts/products/msi20.iss: -------------------------------------------------------------------------------- 1 | [CustomMessages] 2 | msi20_title=Windows Installer 2.0 3 | 4 | en.msi20_size=1.7 MB 5 | de.msi20_size=1,7 MB 6 | es.msi20_size=1,7 MB 7 | 8 | 9 | [Code] 10 | const 11 | msi20_url = 'http://download.microsoft.com/download/WindowsInstaller/Install/2.0/W9XMe/EN-US/InstMsiA.exe'; 12 | 13 | procedure msi20(MinVersion: string); 14 | begin 15 | // Check for required Windows Installer 2.0 on Windows 98 and ME 16 | if (IsX86() and maxwinversion(4, 9) and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), MinVersion) < 0)) then 17 | AddProduct('msi20.exe', 18 | '/q:a /c:"msiinst /delayrebootq"', 19 | CustomMessage('msi20_title'), 20 | CustomMessage('msi20_size'), 21 | msi20_url, 22 | false, false); 23 | end; 24 | -------------------------------------------------------------------------------- /installer/scripts/products/msi31.iss: -------------------------------------------------------------------------------- 1 | [CustomMessages] 2 | msi31_title=Windows Installer 3.1 3 | 4 | en.msi31_size=2.5 MB 5 | de.msi31_size=2,5 MB 6 | es.msi31_size=2,5 MB 7 | 8 | 9 | [Code] 10 | const 11 | msi31_url = 'http://download.microsoft.com/download/1/4/7/147ded26-931c-4daf-9095-ec7baf996f46/WindowsInstaller-KB893803-v2-x86.exe'; 12 | 13 | procedure msi31(MinVersion: string); 14 | begin 15 | // Check for required Windows Installer 3.0 on Windows 2000 or higher 16 | if (IsX86() and minwinversion(5, 0) and (compareversion(fileversion(ExpandConstant('{sys}{\}msi.dll')), MinVersion) < 0)) then 17 | AddProduct('msi31.exe', 18 | '/passive /norestart', 19 | CustomMessage('msi31_title'), 20 | CustomMessage('msi31_size'), 21 | msi31_url, 22 | false, false); 23 | end; 24 | -------------------------------------------------------------------------------- /installer/scripts/products/msiproduct.iss: -------------------------------------------------------------------------------- 1 | [Code] 2 | #IFDEF UNICODE 3 | #DEFINE AW "W" 4 | #ELSE 5 | #DEFINE AW "A" 6 | #ENDIF 7 | 8 | type 9 | INSTALLSTATE = Longint; 10 | const 11 | INSTALLSTATE_INVALIDARG = -2; // An invalid parameter was passed to the function. 12 | INSTALLSTATE_UNKNOWN = -1; // The product is neither advertised or installed. 13 | INSTALLSTATE_ADVERTISED = 1; // The product is advertised but not installed. 14 | INSTALLSTATE_ABSENT = 2; // The product is installed for a different user. 15 | INSTALLSTATE_DEFAULT = 5; // The product is installed for the current user. 16 | 17 | function MsiQueryProductState(szProduct: string): INSTALLSTATE; 18 | external 'MsiQueryProductState{#AW}@msi.dll stdcall'; 19 | 20 | function msiproduct(const ProductID: string): boolean; 21 | begin 22 | Result := MsiQueryProductState(ProductID) = INSTALLSTATE_DEFAULT; 23 | end; 24 | -------------------------------------------------------------------------------- /installer/scripts/products/sqlcompact35sp2.iss: -------------------------------------------------------------------------------- 1 | [CustomMessages] 2 | sqlcompact35sp2_title=SQL Server Compact 3.5 Service Pack 2 3 | 4 | en.sqlcompact35sp2_size=5.3 MB 5 | de.sqlcompact35sp2_size=5,3 MB 6 | es.sqlcompact35sp2_size=5,3 MB 7 | 8 | 9 | [Code] 10 | const 11 | sqlcompact35sp2_url = 'http://download.microsoft.com/download/E/C/1/EC1B2340-67A0-4B87-85F0-74D987A27160/SSCERuntime-ENU.exe'; 12 | 13 | procedure sqlcompact35sp2(); 14 | begin 15 | if (isX86() and not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5')) then 16 | AddProduct('sqlcompact35sp2.msi', 17 | '/qb', 18 | CustomMessage('sqlcompact35sp2_title'), 19 | CustomMessage('sqlcompact35sp2_size'), 20 | sqlcompact35sp2_url, 21 | false, false); 22 | end; 23 | -------------------------------------------------------------------------------- /installer/scripts/products/stringversion.iss: -------------------------------------------------------------------------------- 1 | function stringtoversion(var temp: String): Integer; 2 | var 3 | part: String; 4 | pos1: Integer; 5 | 6 | begin 7 | if (Length(temp) = 0) then begin 8 | Result := -1; 9 | Exit; 10 | end; 11 | 12 | pos1 := Pos('.', temp); 13 | if (pos1 = 0) then begin 14 | Result := StrToInt(temp); 15 | temp := ''; 16 | end else begin 17 | part := Copy(temp, 1, pos1 - 1); 18 | temp := Copy(temp, pos1 + 1, Length(temp)); 19 | Result := StrToInt(part); 20 | end; 21 | end; 22 | 23 | function compareinnerversion(var x, y: String): Integer; 24 | var 25 | num1, num2: Integer; 26 | 27 | begin 28 | num1 := stringtoversion(x); 29 | num2 := stringtoversion(y); 30 | if (num1 = -1) or (num2 = -1) then begin 31 | Result := 0; 32 | Exit; 33 | end; 34 | 35 | if (num1 < num2) then begin 36 | Result := -1; 37 | end else if (num1 > num2) then begin 38 | Result := 1; 39 | end else begin 40 | Result := compareinnerversion(x, y); 41 | end; 42 | end; 43 | 44 | function compareversion(versionA, versionB: String): Integer; 45 | var 46 | temp1, temp2: String; 47 | 48 | begin 49 | temp1 := versionA; 50 | temp2 := versionB; 51 | Result := compareinnerversion(temp1, temp2); 52 | end; 53 | -------------------------------------------------------------------------------- /installer/smallImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/installer/smallImage.bmp -------------------------------------------------------------------------------- /source/BCU-console/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | [assembly: AssemblyTitle("BCU-console")] 13 | [assembly: AssemblyDescription("Command line utility that offers some of BCU's functionality for scripting.")] 14 | [assembly: AssemblyProduct("BCU-console")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("2e8ceca3-4872-439e-9a47-5304fb4bf705")] 23 | -------------------------------------------------------------------------------- /source/BCU-console/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/BCU-launcher/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by BCU-launcher.rc 4 | // 5 | #define IDI_ICON1 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/BulkCrapUninstaller.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | No 3 | True 4 | True 5 | True 6 | True -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Controls/Settings/CacheSettings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Windows.Forms; 7 | using Klocman.Binding.Settings; 8 | 9 | namespace BulkCrapUninstaller.Controls.Settings 10 | { 11 | public partial class CacheSettings : UserControl 12 | { 13 | private readonly SettingBinder _settings = Properties.Settings.Default.SettingBinder; 14 | 15 | public CacheSettings() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | protected override void OnLoad(System.EventArgs e) 21 | { 22 | base.OnLoad(e); 23 | 24 | if (DesignMode) return; 25 | 26 | _settings.BindControl(checkBoxCerts, x => x.CacheCertificates, this); 27 | _settings.BindControl(checkBoxInfo, x => x.CacheAppInfo, this); 28 | 29 | _settings.SendUpdates(this); 30 | Disposed += (x, y) => _settings.RemoveHandlers(this); 31 | 32 | button1.Click += (x, y) => 33 | { 34 | Program.ClearCaches(true); 35 | button1.Enabled = false; 36 | }; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Controls/TabControlWithoutHeader.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.Windows.Forms; 8 | 9 | namespace BulkCrapUninstaller.Controls 10 | { 11 | public class TabControlWithoutHeader : TabControl 12 | { 13 | public TabControlWithoutHeader() 14 | { 15 | if (!DesignMode) Multiline = true; 16 | } 17 | 18 | protected override void WndProc(ref Message m) 19 | { 20 | if (m.Msg == 0x1328 && !DesignMode) 21 | m.Result = new IntPtr(1); 22 | else 23 | base.WndProc(ref m); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Forms/UninstallerListDoubleClickAction.cs: -------------------------------------------------------------------------------- 1 | using BulkCrapUninstaller.Properties; 2 | using Klocman.Localising; 3 | 4 | namespace BulkCrapUninstaller.Forms; 5 | 6 | public enum UninstallerListDoubleClickAction 7 | { 8 | [LocalisedName(typeof (Localisable), nameof(Localisable.UninstallerListDoubleClickAction_DoNothing))] DoNothing = 0, 9 | [LocalisedName(typeof (Localisable),nameof(Localisable.UninstallerListDoubleClickAction_Properties))] OpenProperties, 10 | [LocalisedName(typeof (Localisable), nameof(Localisable.UninstallerListDoubleClickAction_Uninstall))] Uninstall 11 | } 12 | -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Functions/Ratings/UninstallerRating.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace BulkCrapUninstaller.Functions.Ratings 7 | { 8 | public enum UninstallerRating 9 | { 10 | Unknown = 127, 11 | Neutral = 0, 12 | Bad = -10, 13 | Good = 10 14 | } 15 | } -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Functions/Tracking/DatabaseStatSender.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using Klocman.Tools; 8 | 9 | namespace BulkCrapUninstaller.Functions.Tracking 10 | { 11 | public class DatabaseStatSender 12 | { 13 | private readonly ulong userId; 14 | 15 | public DatabaseStatSender(ulong userId) 16 | { 17 | this.userId = userId; 18 | } 19 | 20 | public bool SendData(string value) 21 | { 22 | try 23 | { 24 | var compressed = CompressionTools.BrotliCompress(value); 25 | 26 | using var s = Program.GetHttpClient(); 27 | var response = s.PostAsync(new Uri($"SendStats?userId={userId}&data={Convert.ToBase64String(compressed)}", UriKind.Relative), null!).Result; 28 | response.EnsureSuccessStatusCode(); 29 | } 30 | catch (Exception e) 31 | { 32 | Console.WriteLine("Failed to send stats: " + e); 33 | return false; 34 | } 35 | return true; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Properties/Settings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using Klocman.Binding.Settings; 7 | 8 | namespace BulkCrapUninstaller.Properties 9 | { 10 | // This class allows you to handle specific events on the settings class: 11 | // The SettingChanging event is raised before a setting's value is changed. 12 | // The PropertyChanged event is raised after a setting's value is changed. 13 | // The SettingsLoaded event is raised after the setting values are loaded. 14 | // The SettingsSaving event is raised before the setting values are saved. 15 | internal sealed partial class Settings 16 | { 17 | private SettingBinder _settingManager; 18 | 19 | public SettingBinder SettingBinder 20 | => _settingManager ?? (_settingManager = new SettingBinder(this)); 21 | } 22 | } -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/3.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/MicrosoftProgram_Install_and_Uninstall.meta.diagcab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/MicrosoftProgram_Install_and_Uninstall.meta.diagcab -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/add.multiple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/add.multiple.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/add.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/bigImage.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/bigImage.bmp -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/centerline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/centerline.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/check.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/checkmark.pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/checkmark.pencil.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/checkmark.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/checkmark.uncrossed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/checkmark.uncrossed.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/clean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/clean.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/control.fastforward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/control.fastforward.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/control.fastforward.variant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/control.fastforward.variant.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/delete.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/diagram.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/donate_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/donate_button.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/edit.box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/edit.box.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/filter.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/folder.open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/folder.open.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/fullscreen.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/information.circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/information.circle.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/information.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/layer.add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/layer.add.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/layer.delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/layer.delete.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/layer.delete1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/layer.delete1.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/layer.down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/layer.down.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/layer.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/list.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/list.reorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/list.reorder.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/logo.ico -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/magnify.browse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/magnify.browse.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/magnify.forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/magnify.forward.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/magnify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/magnify.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/message.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/moon.full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/moon.full.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/os.windows.8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/os.windows.8.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/page.copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/page.copy.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/rating1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/rating1.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/rating3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/rating3.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/rating4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/rating4.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/rating5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/rating5.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/refresh.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/save.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/settings.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/star.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/stop.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/table.add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/table.add.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/target.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/timer.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/warning.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/Resources/weather.sun.set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/Resources/weather.sun.set.png -------------------------------------------------------------------------------- /source/BulkCrapUninstaller/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/BulkCrapUninstaller/logo.ico -------------------------------------------------------------------------------- /source/BulkCrapUninstallerTests/SelfUpdaterTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Klocman.UpdateSystem; 7 | using Microsoft.VisualStudio.TestTools.UnitTesting; 8 | 9 | namespace BulkCrapUninstallerTests 10 | { 11 | [TestClass] 12 | public class SelfUpdaterTests 13 | { 14 | [TestMethod] 15 | public void VersionTest() 16 | { 17 | var ver = SelfUpdater.CheckLatestVersion(); 18 | Assert.AreNotEqual(ver, default); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /source/HelperTools/HelperTools.projitems: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | true 6 | 73a9796d-334c-400c-87ac-1dfdd613266e 7 | 8 | 9 | Klocman 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /source/HelperTools/HelperTools.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 73a9796d-334c-400c-87ac-1dfdd613266e 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /source/HelperTools/ReturnValue.cs: -------------------------------------------------------------------------------- 1 | namespace Klocman 2 | { 3 | public enum ReturnValue 4 | { 5 | OkCode = 0, 6 | FunctionFailedCode = 1627, 7 | InvalidArgumentCode = 10022, 8 | CancelledByUserCode = 1223, 9 | UnexpectedNetworkErrorCode = 59 10 | } 11 | } -------------------------------------------------------------------------------- /source/KlocTools/Controls/FacebookButton.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.Drawing; 8 | using System.Windows.Forms; 9 | using Klocman.Forms.Tools; 10 | 11 | namespace Klocman.Controls 12 | { 13 | public sealed class FacebookButton : Button 14 | { 15 | public FacebookButton() 16 | { 17 | Text = string.Empty; 18 | BackgroundImage = Properties.Resources.facebookButton; 19 | BackgroundImageLayout = ImageLayout.Stretch; 20 | 21 | Size = new Size(23, 23); 22 | base.FlatStyle = FlatStyle.Standard; 23 | 24 | TabStop = false; 25 | 26 | Click += FacebookButton_Click; 27 | } 28 | 29 | public new FlatStyle FlatStyle => base.FlatStyle; 30 | public string TargetSite { get; set; } 31 | 32 | private void FacebookButton_Click(object sender, EventArgs e) 33 | { 34 | if (!string.IsNullOrEmpty(TargetSite)) 35 | { 36 | PremadeDialogs.StartProcessSafely(@"https://www.facebook.com/sharer/sharer.php?u=" + TargetSite); 37 | } 38 | else 39 | { 40 | throw new InvalidOperationException("TargetSite is null or empty"); 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /source/KlocTools/Controls/FacebookStatusButton.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.Windows.Forms; 8 | using Klocman.Forms.Tools; 9 | 10 | namespace Klocman.Controls 11 | { 12 | public sealed class FacebookStatusButton : ToolStripStatusLabel 13 | { 14 | public FacebookStatusButton() 15 | { 16 | Image = Properties.Resources.facebookButton; 17 | DisplayStyle = ToolStripItemDisplayStyle.Image; 18 | Click += FacebookStatusButton_Click; 19 | IsLink = true; 20 | 21 | Padding = new Padding(2, 0, 2, 0); 22 | } 23 | 24 | public string TargetSite { get; set; } 25 | 26 | private void FacebookStatusButton_Click(object sender, EventArgs e) 27 | { 28 | if (!string.IsNullOrEmpty(TargetSite)) 29 | { 30 | PremadeDialogs.StartProcessSafely(@"https://www.facebook.com/sharer/sharer.php?u=" + TargetSite); 31 | } 32 | else 33 | { 34 | throw new InvalidOperationException("TargetSite is null or empty"); 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /source/KlocTools/Controls/LineSeparator.Designer.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | 3 | namespace Klocman.Controls 4 | { 5 | sealed partial class LineSeparator 6 | { 7 | /// 8 | /// Required designer variable. 9 | /// 10 | private IContainer components = null; 11 | 12 | /// 13 | /// Clean up any resources being used. 14 | /// 15 | /// true if managed resources should be disposed; otherwise, false. 16 | protected override void Dispose(bool disposing) 17 | { 18 | if (disposing && (components != null)) 19 | { 20 | components.Dispose(); 21 | } 22 | base.Dispose(disposing); 23 | } 24 | 25 | #region Component Designer generated code 26 | 27 | /// 28 | /// Required method for Designer support - do not modify 29 | /// the contents of this method with the code editor. 30 | /// 31 | private void InitializeComponent() 32 | { 33 | components = new System.ComponentModel.Container(); 34 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 35 | } 36 | 37 | #endregion 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /source/KlocTools/Controls/LineSeparator.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Drawing; 7 | using System.Windows.Forms; 8 | 9 | namespace Klocman.Controls 10 | { 11 | public sealed partial class LineSeparator : UserControl 12 | { 13 | #region Constructors 14 | 15 | public LineSeparator() 16 | { 17 | InitializeComponent(); 18 | 19 | Paint += LineSeparator_Paint; 20 | 21 | MaximumSize = new Size(2000, 2); 22 | 23 | MinimumSize = new Size(0, 2); 24 | 25 | Width = 350; 26 | } 27 | 28 | #endregion Constructors 29 | 30 | #region Methods 31 | 32 | private void LineSeparator_Paint(object sender, PaintEventArgs e) 33 | { 34 | var g = e.Graphics; 35 | 36 | g.DrawLine(Pens.DarkGray, new Point(0, 0), new Point(Width, 0)); 37 | 38 | g.DrawLine(Pens.White, new Point(0, 1), new Point(Width, 1)); 39 | } 40 | 41 | #endregion Methods 42 | } 43 | } -------------------------------------------------------------------------------- /source/KlocTools/Controls/PassThroughLabel.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.Windows.Forms; 8 | 9 | namespace Klocman.Controls 10 | { 11 | /// 12 | /// Label that doesn't capture any mouse events 13 | /// 14 | public sealed class PassThroughLabel : Label 15 | { 16 | #region Methods 17 | 18 | //Pass through mouse events 19 | protected override void WndProc(ref Message m) 20 | { 21 | const int WM_NCHITTEST = 0x0084; 22 | const int HTTRANSPARENT = (-1); 23 | 24 | if (m.Msg == WM_NCHITTEST) 25 | { 26 | m.Result = (IntPtr) HTTRANSPARENT; 27 | } 28 | else 29 | { 30 | base.WndProc(ref m); 31 | } 32 | } 33 | 34 | #endregion Methods 35 | } 36 | } -------------------------------------------------------------------------------- /source/KlocTools/Controls/ToolStripNumberControl.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Windows.Forms; 7 | using System.Windows.Forms.Design; 8 | 9 | namespace Klocman.Controls 10 | { 11 | [ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip)] 12 | public sealed class ToolStripNumberControl : ToolStripControlHost 13 | { 14 | #region Constructors 15 | 16 | public ToolStripNumberControl() 17 | : base(new NumericUpDown()) 18 | { 19 | } 20 | 21 | #endregion Constructors 22 | 23 | #region Properties 24 | 25 | public NumericUpDown NumericUpDownControl 26 | { 27 | get { return Control as NumericUpDown; } 28 | } 29 | 30 | #endregion Properties 31 | } 32 | } -------------------------------------------------------------------------------- /source/KlocTools/DisplayMode.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace Klocman 7 | { 8 | public enum DisplayMode 9 | { 10 | Closed, 11 | Simple, 12 | Advanced 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /source/KlocTools/Events/PropertyChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.ComponentModel; 7 | 8 | namespace Klocman.Events 9 | { 10 | /// 11 | /// Generic version of the System.ComponentModel.PropertyChangedEventArgs. 12 | /// It might not contain a valid propertyName 13 | /// 14 | public class PropertyChangedEventArgs : PropertyChangedEventArgs 15 | { 16 | public PropertyChangedEventArgs(T newValue) : this(newValue, string.Empty) 17 | { 18 | } 19 | 20 | public PropertyChangedEventArgs(T newValue, string propertyName) : base(propertyName) 21 | { 22 | NewValue = newValue; 23 | } 24 | 25 | public T NewValue { get; private set; } 26 | } 27 | } -------------------------------------------------------------------------------- /source/KlocTools/Extensions/CheckBoxExtension.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Windows.Forms; 8 | 9 | namespace Klocman.Extensions 10 | { 11 | public static class CheckBoxExtension 12 | { 13 | private static readonly FieldInfo CheckStateInfo = typeof (CheckBox).GetField("checkState", 14 | BindingFlags.NonPublic | BindingFlags.Instance); 15 | 16 | /// 17 | /// Set the CheckState value, optionally not raising the CheckStateChanged event. 18 | /// 19 | /// New state 20 | /// If true the CheckStateChanged event will not be raised. The control will still be invalidated. 21 | /// Checkbox to access 22 | public static void SetCheckState(this CheckBox chBox, CheckState check, bool raiseEvent) 23 | { 24 | if (raiseEvent) 25 | { 26 | chBox.CheckState = check; 27 | } 28 | else 29 | { 30 | CheckStateInfo.SetValue(chBox, check); 31 | chBox.Invalidate(); 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /source/KlocTools/Extensions/EventExtensions.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.ComponentModel; 8 | using System.Linq; 9 | 10 | namespace Klocman.Extensions 11 | { 12 | public static class EventExtensions 13 | { 14 | public static bool CancellableInvoke(this EventHandler handler, object sender, T eventArgs) 15 | where T : CancelEventArgs 16 | { 17 | var cancel = false; 18 | 19 | foreach (var tmp in handler.GetInvocationList().Cast>()) 20 | { 21 | tmp(sender, eventArgs); 22 | if (eventArgs.Cancel) 23 | { 24 | cancel = true; 25 | break; 26 | } 27 | } 28 | return !cancel; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /source/KlocTools/Extensions/MiscExtensions.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace Klocman.Extensions 9 | { 10 | public static class MiscExtensions 11 | { 12 | // Buggy with signed enums 13 | /*public static bool Contains(this Enum keys, Enum flag) 14 | { 15 | var keysVal = Convert.ToUInt64(keys); 16 | var flagVal = Convert.ToUInt64(flag); 17 | 18 | return (keysVal & flagVal) == flagVal; 19 | }*/ 20 | 21 | /// 22 | /// Check if this struct is equal to the default value for this type. 23 | /// 24 | /// 25 | /// 26 | public static bool IsDefault(this T value) 27 | where T : struct 28 | { 29 | var isDefault = value.Equals(default(T)); 30 | 31 | return isDefault; 32 | } 33 | 34 | public static bool IsEmpty(this Guid obj) 35 | { 36 | return Guid.Empty.Equals(obj); 37 | } 38 | 39 | public static bool IsZeroOrNull(this Version obj) 40 | { 41 | return obj == null || obj.Equals(new Version(0, 0, 0, 0)) 42 | || obj.Equals(new Version(0, 0, 0)) || obj.Equals(new Version(0, 0)); 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /source/KlocTools/Extensions/StreamExtensions.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.IO; 7 | 8 | namespace Klocman.Extensions 9 | { 10 | public static class StreamExtensions 11 | { 12 | /// 13 | /// Alternative to Net4 CopyTo 14 | /// 15 | /// 16 | /// 17 | /// 18 | public static long CopyTo(this Stream source, Stream destination) 19 | { 20 | var buffer = new byte[2048]; 21 | int bytesRead; 22 | long totalBytes = 0; 23 | while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0) 24 | { 25 | destination.Write(buffer, 0, bytesRead); 26 | totalBytes += bytesRead; 27 | } 28 | return totalBytes; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /source/KlocTools/Forms/CmbCheckboxSettings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace Klocman.Forms 7 | { 8 | public sealed class CmbCheckboxSettings 9 | { 10 | public CmbCheckboxSettings(string text) 11 | : this(text, false) 12 | { 13 | } 14 | 15 | public CmbCheckboxSettings(string text, bool initialState) 16 | { 17 | Text = text; 18 | InitialState = initialState; 19 | Result = null; 20 | } 21 | 22 | public bool DisableLeftButton { get; set; } 23 | public bool DisableMiddleButton { get; set; } 24 | public bool DisableRightButton { get; set; } 25 | public bool InitialState { get; } 26 | 27 | /// 28 | /// Resulting value of the checkbox. Null if not yet set. 29 | /// 30 | public bool? Result { get; internal set; } 31 | 32 | public string Text { get; } 33 | } 34 | } -------------------------------------------------------------------------------- /source/KlocTools/Forms/CmbHyperlinkSettings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace Klocman.Forms 9 | { 10 | public sealed class CmbHyperlinkSettings 11 | { 12 | public CmbHyperlinkSettings(string text, Action clickAction) 13 | { 14 | Text = text; 15 | ClickAction = clickAction; 16 | } 17 | 18 | public Action ClickAction { get; private set; } 19 | public string Text { get; private set; } 20 | } 21 | } -------------------------------------------------------------------------------- /source/KlocTools/Forms/Tools/ComboBoxWrapper.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace Klocman.Forms.Tools 9 | { 10 | public class ComboBoxWrapper 11 | { 12 | public ComboBoxWrapper() 13 | { 14 | } 15 | 16 | public ComboBoxWrapper(T wrappedObject) 17 | { 18 | WrappedObject = wrappedObject; 19 | } 20 | 21 | public ComboBoxWrapper(T wrappedObject, Func toStringConverter) : this(wrappedObject) 22 | { 23 | ToStringConverter = toStringConverter; 24 | } 25 | 26 | public T WrappedObject { get; set; } 27 | public Func ToStringConverter { get; set; } 28 | 29 | public override string ToString() 30 | { 31 | return ToStringConverter == null ? WrappedObject.ToString() : ToStringConverter(WrappedObject); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /source/KlocTools/Forms/Tools/GlobalMouseMove.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.Windows.Forms; 8 | 9 | namespace Klocman.Forms.Tools 10 | { 11 | public class GlobalMouseMove : IMessageFilter 12 | { 13 | private const int WM_MOUSEMOVE = 0x0200; 14 | 15 | public bool PreFilterMessage(ref Message m) 16 | { 17 | if (m.Msg == WM_MOUSEMOVE) 18 | { 19 | MouseMove?.Invoke(this, EventArgs.Empty); 20 | } 21 | // Always allow message to continue to the next filter control 22 | return false; 23 | } 24 | 25 | public event MouseMovedEvent MouseMove; 26 | 27 | public void RegisterHandler() 28 | { 29 | Application.AddMessageFilter(this); 30 | } 31 | 32 | public void UnregisterEvent() 33 | { 34 | Application.RemoveMessageFilter(this); 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /source/KlocTools/Forms/Tools/MouseMovedEvent.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace Klocman.Forms.Tools 9 | { 10 | public delegate void MouseMovedEvent(object source, EventArgs args); 11 | } -------------------------------------------------------------------------------- /source/KlocTools/Forms/Tools/SingleColorTable.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Drawing; 7 | using System.Windows.Forms; 8 | 9 | namespace Klocman.Forms.Tools 10 | { 11 | public class SingleColorTable : ProfessionalColorTable 12 | { 13 | public SingleColorTable(Color color) 14 | { 15 | SelectedColor = color; 16 | } 17 | 18 | public Color SelectedColor { get; set; } 19 | public override Color ToolStripGradientBegin => SelectedColor; 20 | public override Color ToolStripGradientMiddle => SelectedColor; 21 | public override Color ToolStripGradientEnd => SelectedColor; 22 | public override Color MenuStripGradientBegin => SelectedColor; 23 | public override Color MenuStripGradientEnd => SelectedColor; 24 | public override Color StatusStripGradientBegin => SelectedColor; 25 | public override Color StatusStripGradientEnd => SelectedColor; 26 | } 27 | } -------------------------------------------------------------------------------- /source/KlocTools/Forms/Tools/StandardSystemColorTable.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Drawing; 7 | using System.Windows.Forms; 8 | 9 | namespace Klocman.Forms.Tools 10 | { 11 | //Add this to the bottom of your form. (After your class ends) 12 | public class StandardSystemColorTable : ProfessionalColorTable 13 | { 14 | public override Color ToolStripGradientBegin => SystemColors.Control; 15 | public override Color ToolStripGradientMiddle => SystemColors.Control; 16 | public override Color ToolStripGradientEnd => SystemColors.Control; 17 | public override Color MenuStripGradientBegin => SystemColors.MenuBar; 18 | public override Color MenuStripGradientEnd => SystemColors.MenuBar; 19 | public override Color StatusStripGradientBegin => SystemColors.MenuBar; 20 | public override Color StatusStripGradientEnd => SystemColors.MenuBar; 21 | } 22 | 23 | //Add this to the bottom of your form. (After your class ends) 24 | } -------------------------------------------------------------------------------- /source/KlocTools/IO/WindowsFeatureInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | 8 | namespace Klocman.IO 9 | { 10 | public class WindowsFeatureInfo 11 | { 12 | public WindowsFeatureInfo() 13 | { 14 | CustomProperties = new List>(); 15 | } 16 | 17 | public string FeatureName { get; set; } 18 | public string DisplayName { get; set; } 19 | public string Description { get; set; } 20 | public string RestartRequired { get; set; } 21 | public bool Enabled { get; set; } 22 | public IList> CustomProperties { get; private set; } 23 | } 24 | } -------------------------------------------------------------------------------- /source/KlocTools/Licence.licenseheader: -------------------------------------------------------------------------------- 1 | extensions: designer.cs generated.cs 2 | extensions: .cs .cpp .h 3 | /* 4 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 5 | Apache License Version 2.0 6 | */ 7 | 8 | extensions: .aspx .ascx 9 | <%-- 10 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 11 | Apache License Version 2.0 12 | --%> 13 | extensions: .xml .config .xsd 14 | -------------------------------------------------------------------------------- /source/KlocTools/Localising/LocalisedEnumWrapper.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace Klocman.Localising 9 | { 10 | public class LocalisedEnumWrapper 11 | { 12 | public LocalisedEnumWrapper(Enum targetEnum) 13 | { 14 | TargetEnum = targetEnum ?? throw new ArgumentNullException(nameof(targetEnum)); 15 | } 16 | 17 | public Enum TargetEnum { get; } 18 | 19 | public override string ToString() 20 | { 21 | return TargetEnum.GetLocalisedName(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /source/KlocTools/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | 13 | [assembly: AssemblyTitle("KlocTools")] 14 | [assembly: AssemblyDescription("")] 15 | [assembly: AssemblyProduct("KlocTools")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | 21 | [assembly: ComVisible(true)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | 25 | [assembly: Guid("b0ee9183-3895-4fa1-89a8-ef57571f7223")] -------------------------------------------------------------------------------- /source/KlocTools/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/KlocTools/Resources/centerline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/KlocTools/Resources/centerline.png -------------------------------------------------------------------------------- /source/KlocTools/Resources/facebookButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/KlocTools/Resources/facebookButton.png -------------------------------------------------------------------------------- /source/KlocTools/Resources/twitterButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/KlocTools/Resources/twitterButton.png -------------------------------------------------------------------------------- /source/KlocTools/Subsystems/WindowHoverEventArgs.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace Klocman.Subsystems 9 | { 10 | public sealed class WindowHoverEventArgs : EventArgs 11 | { 12 | public WindowHoverEventArgs(WindowHoverSearcher.WindowInfo targetWindow) 13 | { 14 | TargetWindow = targetWindow; 15 | } 16 | 17 | public WindowHoverSearcher.WindowInfo TargetWindow { get; } 18 | } 19 | } -------------------------------------------------------------------------------- /source/KlocTools/Tools/MachineType.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using Klocman.Localising; 7 | using Klocman.Resources; 8 | 9 | namespace Klocman.Tools 10 | { 11 | public enum MachineType 12 | { 13 | [LocalisedName(typeof(CommonStrings), nameof(CommonStrings.Unknown))] 14 | Unknown, 15 | X86, 16 | X64, 17 | Ia64 18 | } 19 | } -------------------------------------------------------------------------------- /source/KlocTools/Tools/SymbolicLinkType.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace Klocman.Tools 7 | { 8 | public enum SymbolicLinkType 9 | { 10 | File = 0, 11 | Directory = 1 12 | } 13 | } -------------------------------------------------------------------------------- /source/KlocTools/YesNoAsk.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using Klocman.Localising; 7 | using Klocman.Properties; 8 | 9 | namespace Klocman 10 | { 11 | public enum YesNoAsk 12 | { 13 | [LocalisedName(typeof (Localisation), nameof(Localisation.Enums_YesNoAsk_Ask))] Ask = 0, 14 | [LocalisedName(typeof (Localisation), nameof(Localisation.Yes))] Yes, 15 | [LocalisedName(typeof (Localisation), nameof(Localisation.No))] No 16 | } 17 | } -------------------------------------------------------------------------------- /source/Licence.licenseheader: -------------------------------------------------------------------------------- 1 | extensions: designer.cs generated.cs 2 | extensions: .cs .cpp .h 3 | /* 4 | Copyright (c) 2020 Marcin Szeniak (https://github.com/Klocman/) 5 | Apache License Version 2.0 6 | */ 7 | 8 | extensions: .aspx .ascx 9 | <%-- 10 | Copyright (c) 2020 Marcin Szeniak (https://github.com/Klocman/) 11 | Apache License Version 2.0 12 | --%> 13 | extensions: .xml .config .xsd 14 | -------------------------------------------------------------------------------- /source/NBug_custom/Core/Reporting/Feedback.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | using NBug.Core.Reporting.Info; 9 | using NBug.Core.Util.Logging; 10 | 11 | namespace NBug.Core.Reporting 12 | { 13 | internal class Feedback 14 | { 15 | private Report report; 16 | 17 | internal Feedback() 18 | { 19 | try 20 | { 21 | report = new Report(null); 22 | } 23 | catch (Exception exception) 24 | { 25 | Logger.Error( 26 | "An exception occurred while sending a user feedback. See the inner exception for details.", 27 | exception); 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Reporting/Info/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Reporting.Info 8 | { 9 | public class AssemblyInfo 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Reporting/Info/ConfigurationInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Reporting.Info 8 | { 9 | public class ConfigurationInfo 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Reporting/Info/SystemInfo.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Reporting.Info 8 | { 9 | public class SystemInfo 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Database/Ado.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission.Database 8 | { 9 | internal class Ado 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Database/MsSql.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission.Database 8 | { 9 | internal class MsSql 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Database/MySql.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission.Database 8 | { 9 | internal class MySql 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/IProtocolFactory.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission 8 | { 9 | /// 10 | /// The protocol factory creates an IProtocol instance. 11 | /// This interface is to get around the fact that the IProtocol interface 12 | /// cannot be guaranteed to contain a constructor that takes a connection 13 | /// string. At the same time, we allow the protocol implementation to supply 14 | /// the name of its connection string Type parameter. 15 | /// The protocol factory is only used for protocols that originate as connection 16 | /// strings in a configuration file. 17 | /// Note! Your implementation of this class MUST HAVE a parameterless constructor. 18 | /// 19 | public interface IProtocolFactory 20 | { 21 | string SupportedType { get; } 22 | IProtocol FromConnectionString(string connectionString); 23 | } 24 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Protocols.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2010 - 2011 Teoman Soygul. Licensed under LGPLv3 (http://www.gnu.org/licenses/lgpl.html). 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission 8 | { 9 | // Actually enum names should be singular words! 10 | public enum Protocols 11 | { 12 | Mail, 13 | Redmine, 14 | BugNET, 15 | FTP, 16 | HTTP, 17 | AzureBlobStorage 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/BugNet.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.IO; 8 | using NBug.Core.Reporting.Info; 9 | using NBug.Core.Util.Serialization; 10 | 11 | namespace NBug.Core.Submission.Tracker 12 | { 13 | internal class BugNet : ProtocolBase 14 | { 15 | internal BugNet(string connectionString) 16 | : base(connectionString) 17 | { 18 | } 19 | 20 | internal BugNet() 21 | { 22 | } 23 | 24 | public override bool Send(string fileName, Stream file, Report report, SerializableException exception) 25 | { 26 | //HttpWebRequest request; //suppress unused Warning 27 | 28 | return true; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/Bugzilla.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission.Tracker 8 | { 9 | internal class Bugzilla 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/GitHub.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission.Tracker 8 | { 9 | internal class GitHub 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/GoogleCode.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Submission.Tracker 8 | { 9 | internal class GoogleCode 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/Mantis/AccountData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Xml.Serialization; 4 | 5 | namespace NBug.Core.Submission.Tracker.Mantis 6 | { 7 | [Serializable, DebuggerStepThrough, SoapType(Namespace = "http://futureware.biz/mantisconnect")] 8 | public class AccountData 9 | { 10 | private string emailField; 11 | private string idField; 12 | private string nameField; 13 | private string real_nameField; 14 | 15 | [SoapElement(DataType = "integer")] 16 | public string id 17 | { 18 | get { return idField; } 19 | set { idField = value; } 20 | } 21 | 22 | public string name 23 | { 24 | get { return nameField; } 25 | set { nameField = value; } 26 | } 27 | 28 | public string real_name 29 | { 30 | get { return real_nameField; } 31 | set { real_nameField = value; } 32 | } 33 | 34 | public string email 35 | { 36 | get { return emailField; } 37 | set { emailField = value; } 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/Mantis/CustomFieldValueForIssueData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Xml.Serialization; 3 | 4 | namespace NBug.Core.Submission.Tracker.Mantis 5 | { 6 | [Serializable, SoapType(Namespace = "http://futureware.biz/mantisconnect")] 7 | public class CustomFieldValueForIssueData 8 | { 9 | private ObjectRef fieldField; 10 | private string valueField; 11 | 12 | public ObjectRef field 13 | { 14 | get { return fieldField; } 15 | set { fieldField = value; } 16 | } 17 | 18 | public string value 19 | { 20 | get { return valueField; } 21 | set { valueField = value; } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/Mantis/ObjectRef.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Xml.Serialization; 3 | 4 | namespace NBug.Core.Submission.Tracker.Mantis 5 | { 6 | [Serializable, SoapType(Namespace = "http://futureware.biz/mantisconnect")] 7 | public class ObjectRef 8 | { 9 | private string idField; 10 | private string nameField; 11 | 12 | [SoapElement(DataType = "integer")] 13 | public string id 14 | { 15 | get { return idField; } 16 | set { idField = value; } 17 | } 18 | 19 | public string name 20 | { 21 | get { return nameField; } 22 | set { nameField = value; } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/Mantis/RelationshipData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Xml.Serialization; 3 | 4 | namespace NBug.Core.Submission.Tracker.Mantis 5 | { 6 | [Serializable, SoapType(Namespace = "http://futureware.biz/mantisconnect")] 7 | public class RelationshipData 8 | { 9 | private string idField; 10 | private string target_idField; 11 | private ObjectRef typeField; 12 | 13 | [SoapElement(DataType = "integer")] 14 | public string id 15 | { 16 | get { return idField; } 17 | set { idField = value; } 18 | } 19 | 20 | public ObjectRef type 21 | { 22 | get { return typeField; } 23 | set { typeField = value; } 24 | } 25 | 26 | [SoapElement(DataType = "integer")] 27 | public string target_id 28 | { 29 | get { return target_idField; } 30 | set { target_idField = value; } 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Submission/Tracker/Mantis/UserData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Xml.Serialization; 3 | 4 | namespace NBug.Core.Submission.Tracker.Mantis 5 | { 6 | [Serializable, SoapType(Namespace = "http://futureware.biz/mantisconnect")] 7 | public class UserData 8 | { 9 | private string access_levelField; 10 | private AccountData account_dataField; 11 | private string timezoneField; 12 | 13 | public AccountData account_data 14 | { 15 | get { return account_dataField; } 16 | set { account_dataField = value; } 17 | } 18 | 19 | [SoapElement(DataType = "integer")] 20 | public string access_level 21 | { 22 | get { return access_levelField; } 23 | set { access_levelField = value; } 24 | } 25 | 26 | public string timezone 27 | { 28 | get { return timezoneField; } 29 | set { timezoneField = value; } 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/UI/UIDialogResult.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.UI 8 | { 9 | public enum SendReport 10 | { 11 | Send, 12 | 13 | DoNotSend 14 | } 15 | 16 | public enum ExecutionFlow 17 | { 18 | /// 19 | /// This will handle all unhandled exceptions to be able to continue execution. 20 | /// 21 | ContinueExecution, 22 | 23 | /// 24 | /// This will handle all unhandled exceptions and exit the application. 25 | /// 26 | BreakExecution 27 | } 28 | 29 | public struct UIDialogResult 30 | { 31 | internal ExecutionFlow Execution; 32 | internal SendReport Report; 33 | 34 | public UIDialogResult(ExecutionFlow execution, SendReport report) 35 | { 36 | Execution = execution; 37 | Report = report; 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/UI/WinForms/Feedback.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows.Forms; 8 | using NBug.Properties; 9 | 10 | namespace NBug.Core.UI.WinForms 11 | { 12 | internal partial class Feedback : Form 13 | { 14 | public Feedback() 15 | { 16 | InitializeComponent(); 17 | Icon = Resources.NBug_icon_16; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/UI/WinForms/Minimal.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System.Windows.Forms; 8 | using NBug.Core.Reporting.Info; 9 | using NBug.Properties; 10 | 11 | namespace NBug.Core.UI.WinForms 12 | { 13 | internal class Minimal 14 | { 15 | internal UIDialogResult ShowDialog(Report report) 16 | { 17 | MessageBox.Show( 18 | new Form {TopMost = true}, 19 | Settings.Resources.UI_Dialog_Minimal_Message, 20 | report.GeneralInfo.HostApplication + " " + Localization.UI_Dialog_Minimal_Title, 21 | MessageBoxButtons.OK, 22 | MessageBoxIcon.Warning); 23 | 24 | return new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.Send); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/UI/WinForms/Panels/ExceptionDetailView.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | using System.Windows.Forms; 9 | 10 | namespace NBug.Core.UI.WinForms.Panels 11 | { 12 | internal partial class ExceptionDetailView : Form 13 | { 14 | public ExceptionDetailView() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | internal void ShowDialog(string property, string info) 20 | { 21 | propertyTextBox.Text = property; 22 | propertyInformationTextBox.Text = info; 23 | ShowDialog(); 24 | } 25 | 26 | private void CloseButton_Click(object sender, EventArgs e) 27 | { 28 | Close(); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Util/ExceptionThread.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Util 8 | { 9 | internal enum ExceptionThread 10 | { 11 | Main, 12 | 13 | UI_WinForms, 14 | 15 | UI_WPF, 16 | 17 | Task 18 | } 19 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Util/Exceptions/NBugConfigurationException.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | using System.Linq.Expressions; 9 | 10 | namespace NBug.Core.Util.Exceptions 11 | { 12 | [Serializable] 13 | public class NBugConfigurationException : NBugException 14 | { 15 | public NBugConfigurationException(string message, Exception inner) 16 | : base(message, inner) 17 | { 18 | MisconfiguredProperty = string.Empty; 19 | } 20 | 21 | private NBugConfigurationException(string propertyName, string message) 22 | : base(message) 23 | { 24 | MisconfiguredProperty = propertyName; 25 | } 26 | 27 | public string MisconfiguredProperty { get; set; } 28 | 29 | public static NBugConfigurationException Create(Expression> propertyExpression, string message) 30 | { 31 | return new NBugConfigurationException(((MemberExpression) propertyExpression.Body).Member.Name, message); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Util/Exceptions/NBugException.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | using System.Runtime.Serialization; 9 | 10 | namespace NBug.Core.Util.Exceptions 11 | { 12 | [Serializable] 13 | public class NBugException : Exception 14 | { 15 | public NBugException() 16 | { 17 | } 18 | 19 | public NBugException(string message) 20 | : base(message) 21 | { 22 | } 23 | 24 | public NBugException(string message, Exception inner) 25 | : base(message, inner) 26 | { 27 | } 28 | 29 | protected NBugException(SerializationInfo info, StreamingContext context) 30 | : base(info, context) 31 | { 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Util/Exceptions/NBugRuntimeException.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | 9 | namespace NBug.Core.Util.Exceptions 10 | { 11 | [Serializable] 12 | public class NBugRuntimeException : NBugException 13 | { 14 | public NBugRuntimeException(string message, Exception inner) 15 | : base(message, inner) 16 | { 17 | } 18 | 19 | public NBugRuntimeException(string message) 20 | : base(message) 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Util/ProtectedConfiguration.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Util 8 | { 9 | internal class ProtectedConfiguration 10 | { 11 | } 12 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Util/Storage/StoredItemFile.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Core.Util.Storage 8 | { 9 | internal enum StoredItemType 10 | { 11 | Exception, 12 | 13 | Report, 14 | 15 | MiniDump 16 | } 17 | 18 | // This class must remain internal otherwise it should not use constant strings 19 | internal static class StoredItemFile 20 | { 21 | internal const string Exception = "Exception.xml"; 22 | internal const string MiniDump = "MiniDump.mdmp"; 23 | internal const string Report = "Report.xml"; 24 | } 25 | } -------------------------------------------------------------------------------- /source/NBug_custom/Core/Util/Storage/ZipStorer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/Core/Util/Storage/ZipStorer.cs -------------------------------------------------------------------------------- /source/NBug_custom/Enums/MiniDumpType.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Enums 8 | { 9 | public enum MiniDumpType 10 | { 11 | /// 12 | /// Generate no minidump at all. 13 | /// 14 | None, 15 | 16 | /// 17 | /// Generates the smallest possible minidump still with useful information. Dump size is about ~100KB compressed. 18 | /// 19 | Tiny, 20 | 21 | /// 22 | /// Generates minidump with private read write memory and data segments. This mode allows retreiving of local values 23 | /// and the stack 24 | /// variables. Dump size is about ~5MB compressed. 25 | /// 26 | Normal, 27 | 28 | /// 29 | /// Generates full application memory dump. This simply dump all memory used by the process. Dump size is about ~100MB 30 | /// compressed. 31 | /// 32 | Full 33 | } 34 | } -------------------------------------------------------------------------------- /source/NBug_custom/Enums/StoragePath.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Enums 8 | { 9 | public enum StoragePath 10 | { 11 | /// 12 | /// %Temp% directory is the default storage. Usually set to 'C:\Documents and Settings\Username\Local Settings\Temp'. 13 | /// 14 | WindowsTemp, 15 | 16 | /// 17 | /// Initial working directory, i.e. where the executing assembly (MyProduct.exe) is located. 18 | /// 19 | CurrentDirectory, 20 | 21 | /// 22 | /// User's isolated storage store (application scope). 23 | /// 24 | IsolatedStorage, 25 | 26 | /// 27 | /// Custom path should be a full path like 'C:\Documents and Settings\MyUser\Local Settings\Temp'. 28 | /// 29 | /// Path should not have a trailing slash. If the directory doesn't exist, it is created first. 30 | Custom 31 | } 32 | } -------------------------------------------------------------------------------- /source/NBug_custom/Enums/UIProvider.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | namespace NBug.Enums 8 | { 9 | public enum UIProvider 10 | { 11 | /// 12 | /// Automatic provider selection is the default setting. 13 | /// 14 | Auto, 15 | 16 | /// 17 | /// Only the console is used to display the interface and interact with the user if necessary. 18 | /// 19 | Console, 20 | 21 | /// 22 | /// Windows Forms interface is used for all UI displayed to the user. 23 | /// 24 | WinForms, 25 | 26 | /// 27 | /// Windows Presentation Foundation interface is used for all UI displayed to the user. 28 | /// 29 | WPF, 30 | 31 | /// 32 | /// Custom UIProvider. 33 | /// 34 | Custom 35 | } 36 | } -------------------------------------------------------------------------------- /source/NBug_custom/Events/CustomSubmissionEventArgs.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | using System.IO; 9 | using NBug.Core.Reporting.Info; 10 | using NBug.Core.Util.Serialization; 11 | 12 | namespace NBug.Events 13 | { 14 | public class CustomSubmissionEventArgs : EventArgs 15 | { 16 | internal CustomSubmissionEventArgs(string fileName, Stream file, Report report, SerializableException exception) 17 | { 18 | FileName = fileName; 19 | File = file; 20 | Report = report; 21 | Exception = exception; 22 | Result = false; 23 | } 24 | 25 | public SerializableException Exception { get; private set; } 26 | public Stream File { get; private set; } 27 | public string FileName { get; private set; } 28 | public Report Report { get; private set; } 29 | public bool Result { get; set; } 30 | } 31 | } -------------------------------------------------------------------------------- /source/NBug_custom/Events/CustomUIEventArgs.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | using NBug.Core.Reporting.Info; 9 | using NBug.Core.UI; 10 | using NBug.Core.Util.Serialization; 11 | using NBug.Enums; 12 | 13 | namespace NBug.Events 14 | { 15 | public class CustomUIEventArgs : EventArgs 16 | { 17 | internal CustomUIEventArgs(UIMode uiMode, SerializableException exception, Report report) 18 | { 19 | UIMode = uiMode; 20 | Report = report; 21 | Exception = exception; 22 | Result = new UIDialogResult(ExecutionFlow.BreakExecution, SendReport.DoNotSend); 23 | } 24 | 25 | public SerializableException Exception { get; private set; } 26 | public Report Report { get; private set; } 27 | public UIDialogResult Result { get; set; } 28 | public UIMode UIMode { get; private set; } 29 | } 30 | } -------------------------------------------------------------------------------- /source/NBug_custom/Exceptions.cs: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------------------------------------------------- 2 | // 3 | // Copyright (c) 2011 - 2013 Teoman Soygul. Licensed under MIT license. 4 | // 5 | // -------------------------------------------------------------------------------------------------------------------- 6 | 7 | using System; 8 | using NBug.Core.Reporting; 9 | using NBug.Core.Util; 10 | 11 | namespace NBug 12 | { 13 | public static class Exceptions 14 | { 15 | /// 16 | /// Submits a bug report for the given exception. This function useful for submitting bug reports inside a try-catch 17 | /// block. 18 | /// Note that this function uses the NBug configuration so it will use the pre-configured UI and submission settings. 19 | /// 20 | /// The exception to submit as the bug report. 21 | public static void Report(Exception exception) 22 | { 23 | // Below never exits application by itself (by design) so execution of the application continues normally 24 | new BugReport().Report(exception, ExceptionThread.Main); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /source/NBug_custom/NBug.Configurator/NBug.Configurator.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/NBug.Configurator/NBug.Configurator.exe -------------------------------------------------------------------------------- /source/NBug_custom/NBug.Configurator/NBug.Configurator.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /source/NBug_custom/NBug.Configurator/NBug.Examples.WinForms.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/NBug.Configurator/NBug.Examples.WinForms.exe -------------------------------------------------------------------------------- /source/NBug_custom/NBug.Configurator/NBug.Examples.WinForms.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /source/NBug_custom/NBug.Configurator/NBug.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/NBug.Configurator/NBug.dll -------------------------------------------------------------------------------- /source/NBug_custom/NBug_LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2011 Teoman Soygul and contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /source/NBug_custom/NBug_README.md: -------------------------------------------------------------------------------- 1 | # [![NBug](http://www.soygul.com/wp-content/uploads/2011/07/NBug_logo.png)](http://www.soygul.com/projects/nbug/) 2 | NBug is a .NET library created to automate the bug reporting process. It automatically creates and sends: 3 | * Bug reports, 4 | * Crash reports with minidump, 5 | * Error/exception reports with stack trace + ext. info. 6 | It can also be set up as a user feedback system (i.e. feature requests). 7 | 8 | ## Quickstart 9 | Read the quickstart here: http://www.soygul.com/projects/nbug/ 10 | 11 | ## Questions 12 | You can post your question on StackOverflow with NBug tag: http://stackoverflow.com/questions/tagged/nbug 13 | 14 | ## Get it on [NuGet] (https://www.nuget.org/packages/NBug/) 15 | 16 | ```powershell 17 | Install-Package NBug 18 | ``` 19 | 20 | ## CodePlex Home 21 | Old (up to v1.1.1 release) project source is hosted at CodePlex, where you can find more information about the project: http://nbug.codeplex.com/ 22 | -------------------------------------------------------------------------------- /source/NBug_custom/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/NBug_custom/resources/Error_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/Error_16.png -------------------------------------------------------------------------------- /source/NBug_custom/resources/Feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/Feedback.png -------------------------------------------------------------------------------- /source/NBug_custom/resources/Forum_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/Forum_16.png -------------------------------------------------------------------------------- /source/NBug_custom/resources/Help_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/Help_16.png -------------------------------------------------------------------------------- /source/NBug_custom/resources/NBug_Icon_PNG_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/NBug_Icon_PNG_16.png -------------------------------------------------------------------------------- /source/NBug_custom/resources/NBug_icon_16.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/NBug_icon_16.ico -------------------------------------------------------------------------------- /source/NBug_custom/resources/NBug_icon_16_borders.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/NBug_icon_16_borders.ico -------------------------------------------------------------------------------- /source/NBug_custom/resources/Send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/Send.png -------------------------------------------------------------------------------- /source/NBug_custom/resources/VS2010_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/VS2010_16.png -------------------------------------------------------------------------------- /source/NBug_custom/resources/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/NBug_custom/resources/icon.ico -------------------------------------------------------------------------------- /source/NetSettingBinder/ISettingChangedHandlerEntry.cs: -------------------------------------------------------------------------------- 1 | namespace Klocman.Binding.Settings 2 | { 3 | internal interface ISettingChangedHandlerEntry 4 | { 5 | object Tag { get; set; } 6 | void SendEvent(object value); 7 | } 8 | } -------------------------------------------------------------------------------- /source/NetSettingBinder/NetSettingBinder.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net6.0-windows10.0.18362.0 4 | Library 5 | Klocman.Binding.Settings 6 | false 7 | true 8 | true 9 | AnyCPU;x64;x86 10 | 11 | -------------------------------------------------------------------------------- /source/NetSettingBinder/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | 8 | [assembly: AssemblyTitle("NetSettingBinder")] 9 | [assembly: AssemblyDescription("A tool for binding controls, variables and typed event handlers to custom Settings classes.")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Marcin Szeniak")] 12 | [assembly: AssemblyProduct("NetSettingBinder")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | 21 | [assembly: ComVisible(false)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | 25 | [assembly: Guid("c28a3493-8fca-4571-8f9e-27b8420c0720")] 26 | [assembly: AssemblyVersion("1.1.1")] -------------------------------------------------------------------------------- /source/NetSettingBinder/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/NetSettingBinder/SettingChangedEventArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Klocman.Binding.Settings 4 | { 5 | /// 6 | /// EventArgs used by the SettingBinder to announce setting changes 7 | /// 8 | /// Type of the setting that was changed 9 | public class SettingChangedEventArgs : EventArgs 10 | { 11 | internal SettingChangedEventArgs(T value) 12 | { 13 | if (value == null) 14 | throw new ArgumentNullException(nameof(value)); 15 | NewValue = value; 16 | } 17 | 18 | /// 19 | /// New value of the changed setting 20 | /// 21 | public T NewValue { get; } 22 | } 23 | } -------------------------------------------------------------------------------- /source/NetSettingBinder/SettingChangedEventHandler.cs: -------------------------------------------------------------------------------- 1 | namespace Klocman.Binding.Settings 2 | { 3 | public delegate void SettingChangedEventHandler( 4 | object sender, SettingChangedEventArgs args); 5 | } -------------------------------------------------------------------------------- /source/NetSettingBinder/SettingChangedHandlerEntry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Klocman.Binding.Settings 4 | { 5 | /// 6 | /// This class contains the information required to send the event back to the subscriber 7 | /// 8 | internal sealed class SettingChangedHandlerEntry : ISettingChangedHandlerEntry 9 | { 10 | internal SettingChangedHandlerEntry(SettingChangedEventHandler handler, object tag) 11 | { 12 | Handler = handler ?? throw new ArgumentNullException(nameof(handler)); 13 | Tag = tag ?? throw new ArgumentNullException(nameof(tag)); 14 | } 15 | 16 | private SettingChangedEventHandler Handler { get; } 17 | public object Tag { get; set; } 18 | 19 | /// 20 | /// Implemented explicitly to hide it from outside access 21 | /// 22 | void ISettingChangedHandlerEntry.SendEvent(object value) 23 | { 24 | Handler(this, new SettingChangedEventArgs((T) value)); 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /source/ObjectListView/CustomDictionary.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | br 6 | Canceled 7 | Center 8 | Color 9 | Colors 10 | f 11 | fmt 12 | g 13 | gdi 14 | hti 15 | i 16 | lightbox 17 | lv 18 | lvi 19 | lvsi 20 | m 21 | multi 22 | Munger 23 | n 24 | olv 25 | olvi 26 | p 27 | parms 28 | r 29 | Renderer 30 | s 31 | SubItem 32 | Unapply 33 | Unpause 34 | x 35 | y 36 | 37 | 38 | ComPlus 39 | 40 | 41 | 42 | 43 | OLV 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /source/ObjectListView/GlobalSuppressions.cs: -------------------------------------------------------------------------------- 1 | // This file is used by Code Analysis to maintain SuppressMessage 2 | // attributes that are applied to this project. 3 | // Project-level suppressions either have no target or are given 4 | // a specific target and scoped to a namespace, type, member, etc. 5 | 6 | using System.Diagnostics.CodeAnalysis; 7 | 8 | [assembly: SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "", Scope = "member", Target = "~M:BrightIdeasSoftware.ObjectListView.HandleChar(System.Windows.Forms.Message@)~System.Boolean")] 9 | -------------------------------------------------------------------------------- /source/ObjectListView/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/ObjectListView/Resources/clear-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/ObjectListView/Resources/clear-filter.png -------------------------------------------------------------------------------- /source/ObjectListView/Resources/coffee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/ObjectListView/Resources/coffee.jpg -------------------------------------------------------------------------------- /source/ObjectListView/Resources/filter-icons3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/ObjectListView/Resources/filter-icons3.png -------------------------------------------------------------------------------- /source/ObjectListView/Resources/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/ObjectListView/Resources/filter.png -------------------------------------------------------------------------------- /source/ObjectListView/Resources/sort-ascending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/ObjectListView/Resources/sort-ascending.png -------------------------------------------------------------------------------- /source/ObjectListView/Resources/sort-descending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/ObjectListView/Resources/sort-descending.png -------------------------------------------------------------------------------- /source/OculusHelper/OculusApp.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace OculusHelper 7 | { 8 | internal class OculusApp 9 | { 10 | public OculusApp(string canonicalName, string version, bool isCore, string installLocation, string launchFile) 11 | { 12 | CanonicalName = canonicalName; 13 | Version = version; 14 | IsCore = isCore; 15 | InstallLocation = installLocation; 16 | LaunchFile = launchFile; 17 | } 18 | 19 | public string CanonicalName { get; } 20 | public string Version { get; } 21 | public bool IsCore { get; } 22 | public string InstallLocation { get; } 23 | public string LaunchFile { get; } 24 | } 25 | } -------------------------------------------------------------------------------- /source/OculusHelper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | [assembly: AssemblyTitle("OculusHelper")] 13 | [assembly: AssemblyDescription("Manages applications installed through the Oculus store.")] 14 | [assembly: AssemblyProduct("OculusHelper")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("319c4596-0ee6-4392-9d7b-f937794133c7")] -------------------------------------------------------------------------------- /source/OculusHelper/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/PortableSettingsProvider/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/PortableSettingsProvider/U3SettingsProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace PortableSettingsProvider 4 | { 5 | public class U3SettingsProvider : PortableSettingsProvider 6 | { 7 | private const string U3APPDATAPATH = "U3_APP_DATA_PATH"; 8 | 9 | public override string GetAppSettingsPath() 10 | { 11 | // Get the environment variable set by the U3 application for a pointer to its data 12 | try 13 | { 14 | return Environment.GetEnvironmentVariable(U3APPDATAPATH); 15 | } 16 | catch (Exception) 17 | { 18 | // Not running in a U3 environment, just return the application path 19 | 20 | return base.GetAppSettingsPath(); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /source/ScriptHelper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | [assembly: AssemblyTitle("ScriptHelper")] 13 | [assembly: AssemblyDescription("Manages BCU's pre-defined rules and scripts.")] 14 | [assembly: AssemblyProduct("ScriptHelper")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("fa4f2993-a7f5-4738-9fe1-81f34db032a7")] -------------------------------------------------------------------------------- /source/ScriptHelper/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/ScriptHelper/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "ScriptHelper": { 4 | "commandName": "Project", 5 | "commandLineArgs": "list" 6 | }, 7 | "newProfile1": { 8 | "commandName": "Project", 9 | "commandLineArgs": "uninstall Tweak-Showing3DObjectsUnderThisPC" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /source/SimpleTreeMap/Element.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | 3 | namespace SimpleTreeMap 4 | { 5 | public class Element 6 | { 7 | public T Object { get; set; } 8 | 9 | public double Value { get; set; } 10 | 11 | public Color Color { get; set; } 12 | public string Text { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /source/SimpleTreeMap/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/SimpleTreeMap/Slice.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | 4 | namespace SimpleTreeMap 5 | { 6 | public class Slice 7 | { 8 | public ICollection> Elements { get; set; } 9 | 10 | public double Size { get; set; } 11 | 12 | public ICollection> SubSlices { get; set; } 13 | 14 | public string ToElementNames() 15 | { 16 | return string.Join("\n", Elements.Select(x => x.Text).ToArray()); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /source/SimpleTreeMap/SliceRectangle.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | 3 | namespace SimpleTreeMap 4 | { 5 | public class SliceRectangle 6 | { 7 | public int Height { get; set; } 8 | 9 | public Slice Slice { get; set; } 10 | 11 | public int Width { get; set; } 12 | 13 | public int X { get; set; } 14 | 15 | public int Y { get; set; } 16 | public Rectangle PaintRect { get; set; } 17 | 18 | public bool Contains(Point p) 19 | { 20 | return p.X >= X && p.X <= X + Width && p.Y >= Y && p.Y <= Y + Height; 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /source/SimpleTreeMap/SliceResult.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace SimpleTreeMap 4 | { 5 | public class SliceResult 6 | { 7 | public ICollection> Elements { get; set; } 8 | 9 | public double ElementsSize { get; set; } 10 | 11 | public ICollection> RemainingElements { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /source/SimpleTreeMapTests/Form1.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Windows.Forms; 3 | 4 | namespace SimpleTreeMapTests 5 | { 6 | public partial class Form1 : Form 7 | { 8 | public Form1() 9 | { 10 | InitializeComponent(); 11 | 12 | treeMap1.ObjectNameGetter = o => o.ToString(); 13 | treeMap1.ObjectValueGetter = o => (int)o; 14 | treeMap1.Populate(new [] {10,9,8,7,6,5,3,3,3,1}.Cast()); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /source/SimpleTreeMapTests/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace SimpleTreeMapTests 5 | { 6 | static class Program 7 | { 8 | /// 9 | /// The main entry point for the application. 10 | /// 11 | [STAThread] 12 | static void Main() 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new Form1()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /source/SimpleTreeMapTests/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SimpleTreeMapTests.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /source/SimpleTreeMapTests/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /source/SimpleTreeMapTests/SimpleTreeMapTests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net6.0-windows10.0.18362.0 4 | win-x64 5 | WinExe 6 | false 7 | true 8 | true 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /source/SteamHelper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | 13 | [assembly: AssemblyTitle("SteamHelper")] 14 | [assembly: AssemblyDescription("")] 15 | [assembly: AssemblyProduct("SteamHelper")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | 21 | [assembly: ComVisible(false)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | 25 | [assembly: Guid("43022440-594d-437c-96c8-6aa24f6cee63")] -------------------------------------------------------------------------------- /source/SteamHelper/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/SteamHelper/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "SteamHelper": { 4 | "commandName": "Project", 5 | "commandLineArgs": "list /info" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /source/SteamHelper/steam.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/SteamHelper/steam.ico -------------------------------------------------------------------------------- /source/StoreAppHelper/App.cs: -------------------------------------------------------------------------------- 1 | namespace StoreAppHelper 2 | { 3 | public sealed class App 4 | { 5 | public App(string fullName, string displayName, string publisherDisplayName, string logo, 6 | string installedLocation, bool isProtected) 7 | { 8 | FullName = fullName; 9 | DisplayName = displayName; 10 | PublisherDisplayName = publisherDisplayName; 11 | Logo = logo; 12 | InstalledLocation = installedLocation; 13 | IsProtected = isProtected; 14 | } 15 | 16 | public string FullName { get; } 17 | public string DisplayName { get; } 18 | public string PublisherDisplayName { get; } 19 | public string Logo { get; } 20 | public string InstalledLocation { get; } 21 | public bool IsProtected { get; } 22 | } 23 | } -------------------------------------------------------------------------------- /source/StoreAppHelper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | 13 | [assembly: AssemblyTitle("StoreAppHelper")] 14 | [assembly: AssemblyDescription("Helps BCU with managing Windows Store Apps")] 15 | [assembly: AssemblyProduct("StoreAppHelper")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | 21 | [assembly: ComVisible(false)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | 25 | [assembly: Guid("dca3f6ad-0a1a-4e14-894a-114cc9b3b3e5")] -------------------------------------------------------------------------------- /source/StoreAppHelper/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/StoreAppHelper/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/StoreAppHelper/icon.ico -------------------------------------------------------------------------------- /source/UninstallTools/ApplicationEntrySerializer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using Klocman.Tools; 9 | 10 | namespace UninstallTools 11 | { 12 | public sealed class ApplicationEntrySerializer 13 | { 14 | public static void SerializeApplicationEntries(string filename, IEnumerable items) 15 | { 16 | SerializationTools.SerializeToXml(filename, new ApplicationEntrySerializer(items)); 17 | } 18 | 19 | public ApplicationEntrySerializer(IEnumerable items) 20 | { 21 | Items = items.ToList(); 22 | } 23 | 24 | // Needed for serialization 25 | public ApplicationEntrySerializer() 26 | { 27 | } 28 | 29 | public List Items { get; set; } 30 | } 31 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/IUninstallerFactory.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | 8 | namespace UninstallTools.Factory 9 | { 10 | public interface IIndependantUninstallerFactory : IUninstallerFactory 11 | { 12 | bool IsEnabled(); 13 | string DisplayName { get; } 14 | } 15 | 16 | public interface IUninstallerFactory 17 | { 18 | IList GetUninstallerEntries(ListGenerationProgress.ListGenerationCallback progressCallback); 19 | } 20 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/InfoAdders/InfoAdderPriority.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Factory.InfoAdders 7 | { 8 | public enum InfoAdderPriority 9 | { 10 | RunDeadLast = -2, 11 | RunLast = -1, 12 | Normal = 0, 13 | RunFirst = 1 14 | } 15 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/InfoAdders/InstallLocationGenerator.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Factory.InfoAdders 7 | { 8 | public class InstallLocationGenerator : IMissingInfoAdder 9 | { 10 | public void AddMissingInformation(ApplicationUninstallerEntry target) 11 | { 12 | if (target.UninstallerKind == UninstallerType.Nsis || target.UninstallerKind == UninstallerType.InnoSetup) 13 | { 14 | if(!string.IsNullOrEmpty(target.UninstallerLocation)) 15 | target.InstallLocation = target.UninstallerLocation; 16 | } 17 | } 18 | 19 | public string[] RequiredValueNames { get; } = { 20 | nameof(ApplicationUninstallerEntry.UninstallerKind), 21 | nameof(ApplicationUninstallerEntry.UninstallerLocation) 22 | }; 23 | public bool RequiresAllValues { get; } = true; 24 | public bool AlwaysRun { get; } = false; 25 | 26 | public string[] CanProduceValueNames { get; } = { 27 | nameof(ApplicationUninstallerEntry.InstallLocation) 28 | }; 29 | 30 | public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunFirst; 31 | } 32 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/InfoAdders/Is64BitGetter.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using Klocman.Tools; 7 | 8 | namespace UninstallTools.Factory.InfoAdders 9 | { 10 | public class Is64BitGetter : IMissingInfoAdder 11 | { 12 | public void AddMissingInformation(ApplicationUninstallerEntry target) 13 | { 14 | if (target.SortedExecutables == null || target.SortedExecutables.Length == 0 || 15 | target.Is64Bit != MachineType.Unknown) 16 | return; 17 | 18 | try 19 | { 20 | target.Is64Bit = FilesystemTools.CheckExecutableMachineType(target.SortedExecutables[0]); 21 | } 22 | catch 23 | { 24 | target.Is64Bit = MachineType.Unknown; 25 | } 26 | } 27 | 28 | public string[] RequiredValueNames { get; } = { 29 | nameof(ApplicationUninstallerEntry.SortedExecutables) 30 | }; 31 | 32 | public bool RequiresAllValues { get; } = true; 33 | public bool AlwaysRun { get; } = false; 34 | 35 | public string[] CanProduceValueNames { get; } = { 36 | nameof(ApplicationUninstallerEntry.Is64Bit) 37 | }; 38 | 39 | public InfoAdderPriority Priority { get; } = InfoAdderPriority.Normal; 40 | } 41 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/InfoAdders/QuietUninstallStringCopier.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Factory.InfoAdders 7 | { 8 | public class QuietUninstallStringCopier : IMissingInfoAdder 9 | { 10 | public void AddMissingInformation(ApplicationUninstallerEntry target) 11 | { 12 | target.UninstallString = target.QuietUninstallString; 13 | } 14 | 15 | public string[] RequiredValueNames { get; } = { 16 | nameof(ApplicationUninstallerEntry.QuietUninstallString) 17 | }; 18 | public bool RequiresAllValues { get; } = true; 19 | public bool AlwaysRun { get; } = false; 20 | 21 | public string[] CanProduceValueNames { get; } = { 22 | nameof(ApplicationUninstallerEntry.UninstallString) 23 | }; 24 | 25 | public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunFirst; 26 | } 27 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/InfoAdders/VersionCleaner.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Factory.InfoAdders 7 | { 8 | public class VersionCleaner : IMissingInfoAdder 9 | { 10 | public void AddMissingInformation(ApplicationUninstallerEntry target) 11 | { 12 | if (string.IsNullOrEmpty(target.DisplayVersion)) return; 13 | 14 | target.DisplayVersion = ApplicationEntryTools.CleanupDisplayVersion(target.DisplayVersion); 15 | } 16 | 17 | public string[] RequiredValueNames { get; } = { 18 | nameof(ApplicationUninstallerEntry.DisplayVersion) 19 | }; 20 | 21 | public bool RequiresAllValues { get; } = true; 22 | public bool AlwaysRun { get; } = true; 23 | public string[] CanProduceValueNames { get; } = {}; 24 | public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunDeadLast; 25 | } 26 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/InfoAdders/WebBrowserMarker.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2018 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Linq; 7 | using Klocman.Tools; 8 | 9 | namespace UninstallTools.Factory.InfoAdders 10 | { 11 | public class WebBrowserMarker : IMissingInfoAdder 12 | { 13 | private static readonly string[] BrowserExecutables = WindowsTools.GetInstalledWebBrowsers(); 14 | 15 | public void AddMissingInformation(ApplicationUninstallerEntry target) 16 | { 17 | if (target == null || target.SortedExecutables.Length == 0) return; 18 | 19 | target.IsWebBrowser = target.SortedExecutables.Any( 20 | x => BrowserExecutables.Any( 21 | y => PathTools.PathsEqual(x, y))); 22 | } 23 | 24 | public string[] RequiredValueNames { get; } = { 25 | nameof(ApplicationUninstallerEntry.SortedExecutables) 26 | }; 27 | public string[] CanProduceValueNames { get; } = { 28 | nameof(ApplicationUninstallerEntry.IsWebBrowser) 29 | }; 30 | 31 | public bool RequiresAllValues { get; } = true; 32 | public bool AlwaysRun { get; } = false; 33 | public InfoAdderPriority Priority { get; } = InfoAdderPriority.RunLast; 34 | } 35 | } -------------------------------------------------------------------------------- /source/UninstallTools/Factory/PredefinedFactory.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | using System.IO; 8 | using Klocman.IO; 9 | using UninstallTools.Properties; 10 | 11 | namespace UninstallTools.Factory 12 | { 13 | /// 14 | /// Get uninstallers that were manually pre-defined. 15 | /// 16 | public class PredefinedFactory : IIndependantUninstallerFactory 17 | { 18 | public IList GetUninstallerEntries( 19 | ListGenerationProgress.ListGenerationCallback progressCallback) 20 | { 21 | var items = new List(); 22 | return items; 23 | } 24 | 25 | public bool IsEnabled() => UninstallToolsGlobalConfig.ScanPreDefined; 26 | public string DisplayName => Localisation.Progress_AppStores_Templates; 27 | } 28 | } -------------------------------------------------------------------------------- /source/UninstallTools/Junk/Confidence/ConfidenceLevel.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using Klocman.Localising; 7 | using UninstallTools.Properties; 8 | 9 | namespace UninstallTools.Junk.Confidence 10 | { 11 | public enum ConfidenceLevel 12 | { 13 | [LocalisedName(typeof (Localisation), "Confidence_Unknown")] Unknown = 0, 14 | [LocalisedName(typeof (Localisation), "Confidence_Bad")] Bad = 5, 15 | [LocalisedName(typeof (Localisation), "Confidence_Questionable")] Questionable = 7, 16 | [LocalisedName(typeof (Localisation), "Confidence_Good")] Good = 9, 17 | [LocalisedName(typeof (Localisation), "Confidence_VeryGood")] VeryGood = 12 18 | } 19 | } -------------------------------------------------------------------------------- /source/UninstallTools/Junk/Confidence/ConfidenceRecord.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Junk.Confidence 7 | { 8 | public sealed class ConfidenceRecord 9 | { 10 | public ConfidenceRecord(int change, string reason) 11 | { 12 | Change = change; 13 | Reason = reason; 14 | } 15 | 16 | public ConfidenceRecord(int change) 17 | { 18 | Change = change; 19 | } 20 | 21 | public int Change { get; } 22 | public string Reason { get; } 23 | 24 | public override bool Equals(object obj) 25 | { 26 | if (obj is not ConfidenceRecord casted) 27 | return false; 28 | 29 | if (ReferenceEquals(this, obj)) 30 | return true; 31 | 32 | return (casted.Change == Change) && (casted.Reason == Reason); 33 | } 34 | 35 | public override int GetHashCode() 36 | { 37 | return Change.GetHashCode() ^ Reason.GetHashCode(); 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /source/UninstallTools/Junk/Finders/Drive/InstallLocationScanner.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | using UninstallTools.Junk.Confidence; 8 | using UninstallTools.Junk.Containers; 9 | using UninstallTools.Properties; 10 | 11 | namespace UninstallTools.Junk.Finders.Drive 12 | { 13 | public class InstallLocationScanner : JunkCreatorBase 14 | { 15 | public override IEnumerable FindJunk(ApplicationUninstallerEntry target) 16 | { 17 | if (!target.IsInstallLocationValid()) yield break; 18 | 19 | var resultNode = GetJunkNodeFromLocation(GetOtherInstallLocations(target), target.InstallLocation, target); 20 | if (resultNode != null) 21 | { 22 | if (target.UninstallerKind == UninstallerType.StoreApp) 23 | resultNode.Confidence.Add(ConfidenceRecords.IsStoreApp); 24 | yield return resultNode; 25 | } 26 | } 27 | 28 | public override string CategoryName => Localisation.Junk_Drive_GroupName; 29 | } 30 | } -------------------------------------------------------------------------------- /source/UninstallTools/Junk/Finders/Misc/StartupJunk.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using UninstallTools.Junk.Containers; 9 | using UninstallTools.Properties; 10 | 11 | namespace UninstallTools.Junk.Finders.Misc 12 | { 13 | public sealed class StartupJunk : IJunkCreator 14 | { 15 | public void Setup(ICollection allUninstallers) 16 | { 17 | } 18 | 19 | public string CategoryName => Localisation.Junk_Startup_GroupName; 20 | 21 | public IEnumerable FindJunk(ApplicationUninstallerEntry target) 22 | { 23 | if (target.StartupEntries == null) 24 | return Enumerable.Empty(); 25 | 26 | return target.StartupEntries.Where(x => x.StillExists()) 27 | .Select(x => (IJunkResult)new StartupJunkNode(x, target, this)); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /source/UninstallTools/Junk/IJunkCreator.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | using UninstallTools.Junk.Containers; 8 | 9 | namespace UninstallTools.Junk 10 | { 11 | public interface IJunkCreator 12 | { 13 | void Setup(ICollection allUninstallers); 14 | IEnumerable FindJunk(ApplicationUninstallerEntry target); 15 | string CategoryName { get; } 16 | } 17 | } -------------------------------------------------------------------------------- /source/UninstallTools/ListGenerationProgress.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools 7 | { 8 | public class ListGenerationProgress 9 | { 10 | internal ListGenerationProgress(int currentCount, int totalCount, string message) 11 | { 12 | TotalCount = totalCount; 13 | Message = message; 14 | CurrentCount = currentCount; 15 | } 16 | 17 | public int CurrentCount { get; internal set; } 18 | 19 | /// 20 | /// -1 if unknown 21 | /// 22 | public int TotalCount { get; internal set; } 23 | 24 | public string Message { get; internal set; } 25 | 26 | //public GetUninstallerListProgress Clone() => (GetUninstallerListProgress)MemberwiseClone(); 27 | 28 | public ListGenerationProgress Inner { get; internal set; } 29 | 30 | public delegate void ListGenerationCallback(ListGenerationProgress progressReport); 31 | } 32 | } -------------------------------------------------------------------------------- /source/UninstallTools/Lists/ComparisonMethod.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using Klocman.Localising; 7 | using UninstallTools.Properties; 8 | 9 | namespace UninstallTools.Lists 10 | { 11 | public enum ComparisonMethod 12 | { 13 | [LocalisedName(typeof (Localisation), "FilterComparisonMethod_Equals")] Equals, 14 | [LocalisedName(typeof (Localisation), "FilterComparisonMethod_Any")] Any, 15 | [LocalisedName(typeof (Localisation), "FilterComparisonMethod_Contains")] Contains, 16 | [LocalisedName(typeof (Localisation), "FilterComparisonMethod_StartsWith")] StartsWith, 17 | [LocalisedName(typeof (Localisation), "FilterComparisonMethod_EndsWith")] EndsWith, 18 | [LocalisedName(typeof (Localisation), "FilterComparisonMethod_Regex")] Regex 19 | } 20 | } -------------------------------------------------------------------------------- /source/UninstallTools/Lists/ComparisonTargetAttribute.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace UninstallTools.Lists 9 | { 10 | internal class ComparisonTargetAttribute : Attribute 11 | { 12 | } 13 | } -------------------------------------------------------------------------------- /source/UninstallTools/Lists/ITestEntry.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Lists 7 | { 8 | public interface ITestEntry 9 | { 10 | /// 11 | /// Test if the input matches this filter. Returns null if result is impossible to determine or if filter is disabled. 12 | /// If there are only exclude filters assumes that everything is included. 13 | /// 14 | bool? TestEntry(ApplicationUninstallerEntry input); 15 | 16 | bool Enabled { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /source/UninstallTools/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | 13 | [assembly: AssemblyTitle("UninstallTools")] 14 | [assembly: AssemblyDescription("")] 15 | [assembly: AssemblyProduct("UninstallTools")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | 21 | [assembly: ComVisible(false)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | 25 | [assembly: Guid("87b66e59-3e02-4786-b5b0-e0c591147578")] 26 | 27 | // Version information for an assembly consists of the following four values: 28 | // 29 | // Major Version 30 | // Minor Version 31 | // Build Number 32 | // Revision 33 | // 34 | // You can specify all the values or you can default the Build and Revision Numbers 35 | // by using the '*' as shown below: 36 | // [assembly: AssemblyVersion("1.0.*")] -------------------------------------------------------------------------------- /source/UninstallTools/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/UninstallTools/Resources/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/add.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/app.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/arrow.right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/arrow.right.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/delete.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/folder.open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/folder.open.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/link.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/minus.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/page.copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/page.copy.png -------------------------------------------------------------------------------- /source/UninstallTools/Resources/page.duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallTools/Resources/page.duplicate.png -------------------------------------------------------------------------------- /source/UninstallTools/Startup/Normal/IStartupDisable.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Collections.Generic; 7 | 8 | namespace UninstallTools.Startup.Normal 9 | { 10 | internal interface IStartupDisable 11 | { 12 | void Disable(StartupEntry startupEntry); 13 | void Enable(StartupEntry startupEntry); 14 | bool StillExists(StartupEntry startupEntry); 15 | IEnumerable AddDisableInfo(IList existingEntries); 16 | 17 | /// 18 | /// Get backup store path for the link. The backup extension is appended as well. 19 | /// Works only for links, file doesn't have to exist. 20 | /// 21 | string GetDisabledEntryPath(StartupEntry startupEntry); 22 | } 23 | } -------------------------------------------------------------------------------- /source/UninstallTools/Startup/Normal/StartupPointData.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Startup.Normal 7 | { 8 | internal sealed class StartupPointData 9 | { 10 | public readonly bool AllUsers; 11 | public readonly bool IsRegKey; 12 | public readonly bool IsRunOnce; 13 | public readonly bool IsWow; 14 | public readonly string Name; 15 | public readonly string Path; 16 | 17 | public StartupPointData(bool allUsers, bool isRegKey, bool isRunOnce, bool isWow, string name, string path) 18 | { 19 | AllUsers = allUsers; 20 | IsRegKey = isRegKey; 21 | IsRunOnce = isRunOnce; 22 | IsWow = isWow; 23 | Name = name; 24 | Path = path; 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /source/UninstallTools/Uninstaller/BulkUninstallConfiguration.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Uninstaller 7 | { 8 | public sealed class BulkUninstallConfiguration 9 | { 10 | /*public BulkUninstallConfiguration() 11 | { 12 | IgnoreProtection = false; 13 | PreferQuiet = false; 14 | QuietMsi = false; 15 | IntelligentSort = false; 16 | Simulate = false; 17 | }*/ 18 | 19 | public BulkUninstallConfiguration(bool ignoreProtection, bool preferQuiet, 20 | bool simulate, bool autoKillStuckQuiet, bool retryFailedQuiet) 21 | { 22 | IgnoreProtection = ignoreProtection; 23 | PreferQuiet = preferQuiet; 24 | Simulate = simulate; 25 | AutoKillStuckQuiet = autoKillStuckQuiet; 26 | RetryFailedQuiet = retryFailedQuiet; 27 | } 28 | 29 | public bool AutoKillStuckQuiet { get; set; } 30 | public bool RetryFailedQuiet { get; set; } 31 | public bool IgnoreProtection { get; set; } 32 | public bool PreferQuiet { get; set; } 33 | public bool Simulate { get; set; } 34 | } 35 | } -------------------------------------------------------------------------------- /source/UninstallTools/Uninstaller/MsiUninstallModes.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallTools.Uninstaller 7 | { 8 | public enum MsiUninstallModes 9 | { 10 | InstallModify, 11 | Uninstall, 12 | QuietUninstall 13 | } 14 | } -------------------------------------------------------------------------------- /source/UninstallTools/Uninstaller/UninstallStatus.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using Klocman.Localising; 7 | using UninstallTools.Properties; 8 | 9 | namespace UninstallTools.Uninstaller 10 | { 11 | public enum UninstallStatus 12 | { 13 | [LocalisedName(typeof(Localisation), "UninstallStatus_Uninstalling")] 14 | Uninstalling, 15 | [LocalisedName(typeof(Localisation), "UninstallStatus_Waiting")] 16 | Waiting, 17 | [LocalisedName(typeof(Localisation), "UninstallStatus_Completed")] 18 | Completed, 19 | [LocalisedName(typeof(Localisation), "UninstallStatus_Failed")] 20 | Failed, 21 | [LocalisedName(typeof(Localisation), "UninstallStatus_Skipped")] 22 | Skipped, 23 | [LocalisedName(typeof(Localisation), "UninstallStatus_Protected")] 24 | Protected, 25 | [LocalisedName(typeof(Localisation), "UninstallStatus_Invalid")] 26 | Invalid, 27 | [LocalisedName(typeof(Localisation), "UninstallStatus_Paused")] 28 | Paused 29 | } 30 | } -------------------------------------------------------------------------------- /source/UninstallerAutomatizer/Automation/UninstallHandlerUpdateArgs.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | 8 | namespace UninstallerAutomatizer 9 | { 10 | public class UninstallHandlerUpdateArgs : EventArgs, IEquatable 11 | { 12 | public UninstallHandlerUpdateArgs(UninstallHandlerUpdateKind updateKind, string message) 13 | { 14 | Message = message; 15 | UpdateKind = updateKind; 16 | } 17 | 18 | public string Message { get; } 19 | public UninstallHandlerUpdateKind UpdateKind { get; } 20 | 21 | public override bool Equals(object obj) 22 | { 23 | if (ReferenceEquals(this, obj)) return true; 24 | var other = obj as UninstallHandlerUpdateArgs; 25 | return Equals(other); 26 | } 27 | 28 | public bool Equals(UninstallHandlerUpdateArgs other) 29 | { 30 | return other != null && (string.Equals(Message, other.Message) && UpdateKind == other.UpdateKind); 31 | } 32 | 33 | public override int GetHashCode() 34 | { 35 | unchecked 36 | { 37 | return ((Message?.GetHashCode() ?? 0)*397) ^ (int) UpdateKind; 38 | } 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /source/UninstallerAutomatizer/Automation/UninstallHandlerUpdateKind.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | namespace UninstallerAutomatizer 7 | { 8 | public enum UninstallHandlerUpdateKind 9 | { 10 | Normal = 0, 11 | Failed, 12 | Succeeded 13 | } 14 | } -------------------------------------------------------------------------------- /source/UninstallerAutomatizer/Extensions/TestStackWhiteExtensions.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using FlaUI.Core; 8 | 9 | namespace UninstallerAutomatizer.Extensions 10 | { 11 | public static class TestStackWhiteExtensions 12 | { 13 | /// 14 | /// Same as WaitWhileBusy, but doesn't throw when the application exits; it returns instead. 15 | /// 16 | public static void WaitWhileBusyAndAlive(this Application app) 17 | { 18 | try 19 | { 20 | app.WaitWhileBusy(); 21 | 22 | } 23 | catch (InvalidOperationException) 24 | { 25 | if (!app.HasExited) 26 | throw; 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /source/UninstallerAutomatizer/Program.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.Diagnostics; 8 | using System.Windows.Forms; 9 | using Klocman; 10 | 11 | namespace UninstallerAutomatizer 12 | { 13 | /// 14 | /// UninstallerAutomatizer.exe UninstallerType [/K] UninstallCommand 15 | /// 16 | internal static class Program 17 | { 18 | public static readonly string AutomatizerProcessName = Process.GetCurrentProcess().ProcessName; 19 | 20 | public static ReturnValue ReturnValue { get; set; } = ReturnValue.OkCode; 21 | 22 | [STAThread] 23 | private static int Main() 24 | { 25 | using (LogWriter.StartLogging()) 26 | { 27 | Application.EnableVisualStyles(); 28 | Application.SetCompatibleTextRenderingDefault(false); 29 | 30 | Application.Run(new MainWindow()); 31 | 32 | return (int)ReturnValue; 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /source/UninstallerAutomatizer/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | [assembly: AssemblyTitle("UninstallerAutomatizer")] 13 | [assembly: AssemblyDescription("Helps BCU quietly uninstall some loud uninstallers")] 14 | [assembly: AssemblyProduct("UninstallerAutomatizer")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("9c818d14-22ae-46db-b179-119069ae6116")] -------------------------------------------------------------------------------- /source/UninstallerAutomatizer/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/UninstallerAutomatizer/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UninstallerAutomatizer/icon.ico -------------------------------------------------------------------------------- /source/UniversalUninstaller/LogWriter.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.IO; 8 | using System.Reflection; 9 | 10 | namespace UniversalUninstaller 11 | { 12 | internal static class LogWriter 13 | { 14 | public static void WriteMessageToLog(string message) 15 | { 16 | try 17 | { 18 | var location = Assembly.GetCallingAssembly().Location; 19 | location = location.Substring(0, location.Length - 3) + "log"; 20 | 21 | using (var writer = new StreamWriter(location, true)) 22 | { 23 | writer.WriteLine("--- " + DateTime.UtcNow); 24 | writer.WriteLine(message); 25 | } 26 | } 27 | catch (Exception ex) 28 | { 29 | Console.WriteLine(@"Failed to write to log file:\n" + ex); 30 | } 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /source/UniversalUninstaller/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("UniversalUninstaller")] 8 | [assembly: AssemblyDescription("Simple tool used by BCU in place of missing uninstallers to remove applications")] 9 | [assembly: AssemblyProduct("UniversalUninstaller")] 10 | 11 | // Setting ComVisible to false makes the types in this assembly not visible 12 | // to COM components. If you need to access a type in this assembly from 13 | // COM, set the ComVisible attribute to true on that type. 14 | [assembly: ComVisible(false)] 15 | 16 | // The following GUID is for the ID of the typelib if this project is exposed to COM 17 | [assembly: Guid("129cbf33-9e19-4d26-a601-5e8394907ae1")] 18 | -------------------------------------------------------------------------------- /source/UniversalUninstaller/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/UniversalUninstaller/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace UniversalUninstaller.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /source/UniversalUninstaller/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/Folder_48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/Folder_48x48.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/Generic_Application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/Generic_Application.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/Generic_Document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/Generic_Document.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/app.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/folder.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/icon.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/page.text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/page.text.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/section.collapse.all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/section.collapse.all.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/section.collapse.all1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/section.collapse.all1.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/section.expand.all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/section.expand.all.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/Resources/section.expand.all1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/Resources/section.expand.all1.png -------------------------------------------------------------------------------- /source/UniversalUninstaller/TreeEntry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace UniversalUninstaller 5 | { 6 | public class TreeEntry 7 | { 8 | public TreeEntry(FileSystemInfo fileSystemInfo) 9 | { 10 | FileSystemInfo = fileSystemInfo ?? throw new ArgumentNullException(nameof(fileSystemInfo)); 11 | IsDirectory = fileSystemInfo is DirectoryInfo; 12 | Checked = true; 13 | } 14 | 15 | public bool IsDirectory { get; } 16 | public FileSystemInfo FileSystemInfo { get; } 17 | public bool Checked { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /source/UniversalUninstaller/UniversalUninstaller.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/UniversalUninstaller/UniversalUninstaller.ico -------------------------------------------------------------------------------- /source/WinUpdateHelper/LogWriter.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System; 7 | using System.IO; 8 | using System.Reflection; 9 | 10 | namespace WinUpdateHelper 11 | { 12 | internal static class LogWriter 13 | { 14 | public static void WriteMessageToLog(string message) 15 | { 16 | var location = Assembly.GetCallingAssembly().Location; 17 | location = location.Substring(0, location.Length - 3) + "log"; 18 | 19 | using (var writer = new StreamWriter(location, true)) 20 | { 21 | writer.WriteLine("--- " + DateTime.UtcNow); 22 | writer.WriteLine(message); 23 | } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /source/WinUpdateHelper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2017 Marcin Szeniak (https://github.com/Klocman/) 3 | Apache License Version 2.0 4 | */ 5 | 6 | using System.Reflection; 7 | using System.Runtime.InteropServices; 8 | 9 | // General Information about an assembly is controlled through the following 10 | // set of attributes. Change these attribute values to modify the information 11 | // associated with an assembly. 12 | [assembly: AssemblyTitle("WinUpdateHelper")] 13 | [assembly: AssemblyDescription("Helps BCU with managing Windows Updates")] 14 | [assembly: AssemblyProduct("WinUpdateHelper")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("5247bd39-5deb-4f14-af4b-9598a8544d06")] 23 | -------------------------------------------------------------------------------- /source/WinUpdateHelper/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | FileSystem 10 | net6.0-windows10.0.18362.0 11 | win-x64 12 | true 13 | False 14 | True 15 | False 16 | 17 | -------------------------------------------------------------------------------- /source/WinUpdateHelper/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/WinUpdateHelper/icon.ico -------------------------------------------------------------------------------- /source/es.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Klocman/Bulk-Crap-Uninstaller/47e0afc0968776ff8df9c6d1d353e75e66657a5f/source/es.exe --------------------------------------------------------------------------------