| Bulk Crap Uninstaller Documentation

Table of Contents

1 Introduction
1.1 System Requirements
2 Main Window
2.1 Application List
2.1.1 Highlight Colors
2.1.2 Certificates and verification
2.1.3 User rating
2.2 Left sidebar
2.3 Treemap
2.4 Functions
2.4.1 Uninstall / Uninstall quietly
2.4.2 Uninstall using MsiExec / Windows Installer
2.4.3 Uninstall manually
2.4.4 Clean up “Program Files” folders
2.4.5 Find by window
2.4.6 Uninstall Windows Features
3 Application properties
3.1 Missing uninstaller
3.2 Unregistered application
3.3 Protected
3.4 Store App
3.5 System component
3.6 Update
4 Settings
4.1 Uninstallation
4.1.1 Concurrent uninstallation
5 Advanced copy to clipboard
6 Advanced filtering / Uninstall lists
6.1 Enabling advanced filtering
6.2 Filters
6.3 Conditions
6.3.1 Comparison methods
6.3.2 Target property
7 Uninstallation
7.1 Loud / Quiet uninstallers
7.2 Preparations
7.2.1 Process kill window
7.3 Uninstall progress window
7.3.1 Manual controls, dealing with stuck uninstallers
7.3.2 Aborting the entire uninstall task
7.4 Leftover / Junk removal
7.4.1 Confidence
7.4.2 Backup
8 Custom rules, Scripts and Tweaks
8.1 Specification of Script files
8.1.1 Example script file (remove-onedrive.xml)
8.1.2 Standard elements
8.1.3 Acceptable values
8.1.4 Special elements
9 Command line options
9.1 BCUninstaller.exe
9.2 BCU-console.exe
9.3 StoreAppHelper.exe
9.4 SteamHelper.exe
9.5 OculusHelper.exe
9.6 UninstallerAutomatizer.exe

# 1 Introduction

Bulk Crap Uninstaller (or BCUninstaller) is a free (as in speech) program uninstaller. It excels at removing large amounts of applications with minimal user input. It can clean up leftovers, detect orphaned applications, run uninstallers according to premade lists, and much more!

BCU is fully compatible with Windows Store Apps, Steam, Windows Features and has special support for many uninstalling systems (NSIS, InnoSetup, Msiexec, and many other). Check below for a full list of functions.

Bulk Crap Uninstaller is licensed under Apache 2.0 open source license, and can be used in both private and commercial settings for free and with no obligations, as long as no conditions of the license are broken.

Official website and a contact form can be found at https://www.bcuninstaller.com/

Get the latest version or view the code at https://github.com/Klocman/Bulk-Crap-Uninstaller

## 1.1 System Requirements

- •OS: Windows Vista or newer is recommended. BCU will also work on XP and 2003 with reduced functionality and possibly some bugs. Both 32bit and 64bit versions are supported.

- •.NET: Recommended .NET 4.0 or newer, can run on only .NET 3.5 with reduced functionality.

- •RAM: Around 300MB or more of free RAM.

- •CPU: Doesn't really matter.

- •Free space: 50MB or more.

- •HDD: Anything will work, but slower drives will make scan times proportionally longer.

BCUninstaller needs administrator rights to start and function. They are needed to access some system functions during application scan, to uninstall applications and to delete leftovers. Some other functions might also need elevated permissions to function, therefore it’s not possible to run BCU with standard user permissions.

# 2 Main Window

## 2.1 Application List

A list of applications that BCU managed to find in your system takes up most of the main window. The list can be sorted by the columns and filtered using options on the left.

### 2.1.1 Highlight Colors

By default, many items on the list have colored backgrounds according to their properties. Their meanings can be found in the Color legend in the bottom right corner. If the list is not visible, it can be enabled from the “View” menu.

Items with white backgrounds have no special properties.

### 2.1.2 Certificates and verification

BCU can read and verify certificates of uninstallers. Their details can be viewed in the properties window. This function not meant to indicate good or bad applications, use it only as a hint.

Verified certificate means that the executable is guaranteed to not have been modified in any way since leaving its publisher.

The following can cause a certificate to fail verification:

- •It was impossible to verify the certificate because of invalid root certificates or no internet connection.

- •At some point the executable has been modified in some way. This is normal for Windows Installer (MSI/MsiExec) uninstallers – they are modified by the system to save disk space.

- •The certificate has been self-signed and is therefore impossible to verify.

- •The signed file has been modified/corrupted during its travel through the intertubes.

### 2.1.3 User rating

Most applications can be rated by users of BCU. The ratings are automatically synchronized with the statistics server. The rating can be between 0 and 4 stars, color of the stars corresponds to their number.

If the stars are black, it means that they represent your own vote instead of the user average. You can hover over the stars to see the average rating.

## 2.2 Left sidebar

Settings Sidebar contains mostly filtering options for the application list. It can be hidden from the “View” menu.

Search box is the same as a condition used in advanced filtering, check 6.3 Conditions for more information.

If Advanced filtering is enabled, the sidebar is automatically hidden.

## 2.3 Treemap

At the bottom of the application, just above the status bar, you should see a bunch of colored tiles. This is a treemap – a visual representation of all the applications currently visible on the list.

The size of the square is based on application’s estimated size. If an application doesn’t have an estimated size, it will not be shown. The tiles are scaled using a non-linear algorithm - size differences will appear smaller than they really are.

You can hover over the treemap, and the application currently under cursor will be shown below. You can click and right-click on any of the tiles to open context menu, and left-click to select the applications. It works the same as the main list. Selected tiles will change color to the selection color.

## 2.4 Functions

### 2.4.1 Uninstall / Uninstall quietly

Begins uninstallation of selected applications. Quiet uninstallation means that you do not have to click anything – the process is automatic. If it is impossible to quietly uninstall some items, a dialog will be shown with ability to remove the “loud” uninstallers from the selection.

### 2.4.2 Uninstall using MsiExec / Windows Installer

If the application has a Product code / GUID attached to it you can try using MsiExec to uninstall it. It is not guaranteed to work on all applications.

### 2.4.3 Uninstall manually

Skips running the uninstaller (if it is available) and instead gives a list of files and registry keys that you can choose to delete manually.

It is not recommended to use this method unless it is impossible to uninstall the application in any other way.

### 2.4.4 Clean up “Program Files” folders

Search all folders that are defined as default installation locations (usually only the Program Files folders) for leftovers. This includes empty folders and partially uninstalled applications. You will be given a choice of items to remove.

### 2.4.5 Find by window

Opens a small tool window. Drag and drop the cross over a window you want to scan. BCU will try to find the application that owns the specified window and show it on the list.

### 2.4.6 Uninstall Windows Features

Scan the system for installed Windows Features and add them to the application list. They are treated as normal applications after that point and can be uninstalled in bulk. The scan can take a while.

# 3 Application properties

Some properties are displayed as background colors, check 2.1.1 Highlight Colors for more information.

Additional information not displayed on the list is available in the properties window.

## 3.1 Missing uninstaller

The application is registered in the system registry, but its uninstaller is either corrupted or missing. It will have to be removed manually.

## 3.2 Unregistered application

The application is not registered in the system registry, but is present on the drive. If the application still has a working uninstaller, BCU can often manage to find it and let you run it. If the uninstaller is not found, BCU will automatically generate a simple uninstaller.

## 3.3 Protected

The application is marked as protected in system registry. This is often used to indicate that it is a part of another package, or is required by other applications.

## 3.4 Store App

The new Windows 10 – styled applications are all called Store Apps, even if they do not come from Windows Store. They normally require a completely different method of removal, but BCU presents them as normal applications.

## 3.5 System component

The application is marked to be important in some way to your system. Drivers and parts of bigger software packages are often marked as system components to hide them from the user. They are not actually required by the operating system.

## 3.6 Update

Means that the item is an update to another application, or the OS. Uninstalling the actual application will usually remove all related updates automatically.

# 4 Settings

Settings are automatically applied and saved on application exit. It is possible to reset settings to their defaults by “Help\Reset settings” menu option, or by removing the “BCUninstaller.settings” file in BCU's directory.

## 4.1 Uninstallation

- •Prevent shutdown/restart will attempt to stop uninstallers from restarting the system.

- •Intelligent uninstaller sorting will sort applications during bulk uninstallation to speed up the process. It will place loud uninstallers first so you can leave the computer earlier.

- •Disable protection will stop blocking protected applications from being uninstalled.

- •Turning Simulate uninstallation on will prevent BCU from uninstalling or removing anything from your system.

### 4.1.1 Concurrent uninstallation

Concurrent uninstallation is an experimental feature that will schedule multiple uninstallers to be ran at the same time. It will do its best to prevent any collisions and sometimes this functionality will be completely unavailable.

It is not recommended to run more than 2 uninstallers at the same time unless you are using a fast SSD.

You can manually force uninstallers to run concurrently from the bulk uninstall window. Doing so will still be tested for collisions, but the check can be disabled (not recommended).

# 5 Advanced copy to clipboard

The pattern is a Composite Format String. It is automatically processed when written.

To enable use of escaped characters (\r, \t, \n, etc.) enable the “Unescape” check-box. It will convert any escaped characters to their unescaped form.

To insert a newline add “\r\n” (standard newline on Windows) to the pattern and enable “Unescape“. You should see the newline appear in the Results box.

The combo box contains all available variables that can be added to the pattern. Selecting one of the variables will automatically paste it at cursor position.

# 6 Advanced filtering / Uninstall lists

## 6.1 Enabling advanced filtering

Advanced filtering can be enabled by clicking the “Advanced button” on the sidebar or by opening an existing uninstall list from the “File” menu.

If an uninstall list is loaded, its path is displayed in the application's title bar.

When advanced filtering is enabled, all basic filtering settings are ignored.

## 6.2 Filters

Filters are displayed in the “Filter list”. Each filter can contain multiple conditions.

It is possible to add filters from an existing uninstall list by the option on the toolbar. New filters are appended to the end of the list.

If the filter's type is set to include, it will only allow applications that match all of its conditions to appear on the list. They are executed before the exclude filters.

If the type is set to exclude, the filter will remove all applications that match all of its conditions from the list. They override the include filters.

If there are only exclude filters all applications are automatically included.

## 6.3 Conditions

For a filter to match an application all of its conditions must match it. If any of the conditions fails to match the application the entire filter fails the match.

The filter text is compared against target property using selected comparison method. The result of the comparison can be optionally inverted (negated).

### 6.3.1 Comparison methods

- •Contains – Property contains the entire filter text.

- •Contains any – Property contains any of the words in the filter text. They are separated by spaces.

- •Equals – Property is exactly the same as the filter text.

- •Starts with / Ends with – Property either starts or ends with the filter text.

- •Regex – Filter text is matched to the property using a Regex engine. Regex online manual.

### 6.3.2 Target property

Property of the application that will be compared against. “All properties” will try to match the filter text to any of the available properties.

The properties can be previewed by viewing properties of the applications.

# 7 Uninstallation

## 7.1 Loud / Quiet uninstallers

There are two ways to uninstall an application – loud and quiet.

- •Loud uninstallation refers to an uninstaller that requires user to go click through a few screens (by clicking on buttons like “Next”, “Finish”, etc.) to finish the uninstallation.

- •Quiet uninstallation on the other hand requires no user input to complete. Because of this they are much easier to handle and faster to complete.

BCU is capable of generating quiet uninstallers for many applications using many techniques (e.g. UI automation).

## 7.2 Preparations

After clicking on any of the Uninstall buttons you might be asked a few questions, most notably:

- •If loud uninstallers should be removed from a quiet task.

- •If protected items should be removed from the task (only if protection is enabled in settings).

- •If BCU should create a System Restore point before running the task.

- •If BCU should terminate applications that might interfere with running the task (see below).

### 7.2.1 Process kill window

The above window is shown if there are any running applications that might be using files that will be uninstalled in the task. It is recommended to close all of them, but false positives are possible – keep an eye out to avoid losing opened work.

## 7.3 Uninstall progress window

The Uninstall progress window will appear to display progress of the uninstallation after the configuration. Uninstallers are grouped in following categories:

- •Uninstalling – The uninstaller is running at this very moment. Multiple uninstallers can run at once if they are not colliding with each other. This behavior can be changed in the settings.

- •Waiting – The uninstaller is waiting to be executed.

- •Completed – The uninstaller appears to have completed successfully.

- •Failed – The uninstaller failed to run or complete. If possible a reason for the failure is provided.

- •Skipped – The uninstaller has been skipped by the user. If possible uninstallers closed by the “Cancel” button are put in this category.

### 7.3.1 Manual controls, dealing with stuck uninstallers

By selecting an uninstaller on the list user can use functions located on the toolbar above.

- •Run uninstaller now – Force the uninstaller to run now. By default, BCU will check if the uninstaller will collide with already running uninstallers before executing it. This safety check can be disabled in the settings.

- •Skip – Do not execute the uninstaller. If the uninstaller is already running BCU will stop waiting for it.

- •Terminate – Do not execute the uninstaller. If the uninstaller is already running BCU will terminate it before continuing.

### 7.3.2 Aborting the entire uninstall task

At any point it is possible to abort the uninstall task by clicking “Cancel” or attempting to close the window. BCU will ask for confirmation before skipping all the remaining uninstallers.

Already running uninstallers are not closed, BCU will wait for them to complete. If the remaining uninstallers are stuck it might be necessary to manually skip or terminate them.

## 7.4 Leftover / Junk removal

Once the uninstallation is completed BCU will ask to search for leftovers. If any are found, the above window will be displayed.

It is possible to open locations of the items and view their details through their context menus.

Export will only save data visible in the window (item paths, confidence ratings, etc.). This is not a backup tool.

### 7.4.1 Confidence

All items are given a “Confidence” rating. The higher the confidence, the safer it is to remove an item. By default, only items of at least Good confidence are selected.

It is possible to show items with Bad confidence, but removing them is dangerous and recommended only for experienced users.

### 7.4.2 Backup

BCU will ask to create a backup of the registry entries before removing them.

Files and folders are moved to the recycle bin. If the recycle bin is disabled or has not enough capacity the items are removed permanently.

# 8 Custom rules, Scripts and Tweaks

Starting with BCU version 4.9 it’s possible to add custom detection rules (from now on referred to as “Scripts”) that will create custom entries on the application list. This allows end-user to add custom rules to their installation of BCU and to later automate them.

Scripts are placed in the Resources\Scripts folder inside of BCU’s installation directory and have .xml extensions. They can be placed in subfolders.

System Tweaks introduced in version 4.9 are implemented as scripts and can be used as examples.

## 8.1 Specification of Script files

Scripts are simple .xml files that contain information necessary to create a new entry on the application list, as well as an optional condition.

### 8.1.1 Example script file (remove-onedrive.xml)

<script>

<ConditionScript>remove-onedrive_check.ps1</ConditionScript>

<Script>remove-onedrive.ps1</Script>

<DisplayName>OneDrive</DisplayName>

<Publisher>Microsoft Corporation</Publisher>

<RatingId>OneDrive</RatingId>

<AboutUrl>https://onedrive.live.com/</AboutUrl>

<InstallLocation>Registry::HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive\CurrentVersionPath</InstallLocation>

<DisplayVersion>Registry::HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive\Version</DisplayVersion>

<DisplayIcon>Registry::HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive\OneDriveTrigger</DisplayIcon>

</script>

### 8.1.2 Standard elements

Most properties of the ApplicationUninstallerEntry class, for example DisplayName, InstallLocation, can be assigned by creating an element with the property’s name.

To get a list of available element names with example values, open BCU and select File>Export, or right click on any application in the list and open Advanced Clipboard Copy. You can also check the source code.

### 8.1.3 Acceptable values

Most elements can take an arbitrary constant string. It will be copied as-is to the entry on the application list, unless it’s invalid in some way.

If the value starts with “Registry::”, it will be treated as a full registry path to a value. The pointed value will be read from the registry and used instead of the registry path.

For example, using Registry::HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive\CurrentVersionPath in the InstallLocation element will cause BCU to read the value named CurrentVersionPath from registry key named HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive, and put its contents into the InstallLocation property.

### 8.1.4 Special elements

- •Script - path to a PowerShell script file that will be executed when this entry is “uninstalled”. It overrides UninstallString and QuietUninstallString elements. The path is relative to the .xml file. Either Script or UninstallString has to be assigned.

- •ScriptArgs – optional arguments to be passed to the above script.

- •ConditionScript – path to an optional PowerShell script that will be executed to see if this entry should be displayed. If the script returns error code 0, the entry will be displayed. If anything else than 0 is returned, the entry will not be displayed on the application list. The path is relative to the .xml file.

- •ConditionScriptArgs - optional arguments to be passed to the above script

- •SystemIcon – optional name of one of the .Net SystemIcons icons. It overrides the DisplayIcon element.

# 9 Command line options

List of valid command line options to BCUninstaller and its helpers.

## 9.1 BCUninstaller.exe

BCUninstaller [drive:][path]filename

[drive:][path] – Specifies drive and directory of the uninstall list.

filename – Specifies filename of the uninstall list

BCUninstaller.exe has only very basic command line options at the moment, subject to change.

## 9.2 BCU-console.exe

BCU-console uninstall [drive:][path]filename [/Q] [/U] [/V]

uninstall - Uninstalls applications based on the supplied uninstall list.

[drive:][path] – Specifies drive and directory of the uninstall list.

filename – Specifies filename of the .bcul uninstall list that contains information about what applications to uninstall.

/Q - Use quiet uninstallers wherever possible (by default only use loud).

/U - Unattended mode (do not ask user for confirmation). WARNING: ONLY USE AFTER THOROUGH TESTING. UNINSTALL LISTS SHOULD BE AS SPECIFIC AS POSSIBLE TO AVOID FALSE POSITIVES. THERE ARE NO WARRANTIES, USE WITH CAUTION.

/V - Verbose logging mode (show more information about what is currently happening).

Return codes:

0 - The operation completed successfully.

1 - Invalid arguments.

1223 - The operation was canceled by the user.

## 9.3 StoreAppHelper.exe

StoreAppHelper /query

StoreAppHelper /uninstall FullName

query – Returns a list of installed Store Apps for current user.

uninstall – Uninstalls a single Store App specified by its FullName.

Return codes:

0 - The operation completed successfully.

1627 - An unexpected error occurred.

10022 - Invalid arguments.

## 9.4 SteamHelper.exe

SteamHelper u[ninstall] [/s[ilent]] AppID

SteamHelper i[nfo] AppID

SteamHelper l[ist]

SteamHelper steam

AppID - Steam application ID.

u[ninstall] - Uninstall a Steam app.

i[nfo] - Show info about a Steam app.

l[ist] - List Steam app ID's.

steam - Show Steam install location.

s[ilent] - Don’t prompt for any user input.

Return codes:

0 - The operation completed successfully.

59 - An unexpected error occurred.

1223 - The operation was canceled by the user.

10022 - Invalid arguments.

## 9.5 OculusHelper.exe

OculusHelper /query

OculusHelper /uninstall CanonicalName

query – Returns a list of installed Oculus Apps for current user.

uninstall – Uninstalls a single Store App specified by its CanonicalName.

Return codes:

0 - The operation completed successfully.

1627 - An unexpected error occurred.

10022 - Invalid arguments.

## 9.6 UninstallerAutomatizer.exe

UninstallerAutomatizer UninstallerType [/K] UninstallCommand

UninstallerType - Type of the uninstaller, taken from UninstallerType enumeration. At the moment of writing only “Nsis” is supported.

K - Kill the uninstaller if automatic uninstallation failed.

UninstallCommand - Path to the target uninstaller with optional arguments.

Return codes:

0 - The operation completed successfully.

1627 - An unexpected error occurred.

10022 - Invalid arguments.