Mailbag: Can the .NET Framework cleanup tool be run in silent mode?


I have read about the .NET Framework cleanup tool, and I would like to be able to automate running it on several systems.  Does the cleanup tool support any command line switches to run it in silent mode? 


Yes, it is possible to run the cleanup tool in silent mode and unattended mode.

Running in silent mode will cause the tool to run without showing any UI.  To run in silent mode, you need to download the cleanup tool, extract the file cleanup_tool.exe from the zip file, and then run it using syntax like the following:

cleanup_tool.exe /q:a /c:"cleanup.exe /p <name of product to remove>"

The value that you pass with the /p switch to replace <name of product to remove> in this example must exactly match one of the products listed in the file cleanup.ini that is included in the self-extracting package for the cleanup tool.

Running in unattended mode will cause the tool to display a progress bar during removal, but will not show any other UI and will not require the user to interact with the UI at all.  After removal completes, the UI will disappear and the process will exit.  To run in unattended mode, you need to use the same syntax as silent mode and add the /u command line switch in addition to the /p switch.  For example:

cleanup_tool.exe /q:a /c:"cleanup.exe /p <name of product to remove> /u"

Currently, the cleanup tool includes the following product names that can be passed in using the /p switch:

  • .NET Framework - All Versions
  • .NET Framework - All Versions (Tablet PC and Media Center)
  • .NET Framework - All Versions (Windows Server 2003)
  • .NET Framework - All Versions (Windows Vista and Windows Server 2008)
  • .NET Framework 1.0
  • .NET Framework 1.1
  • .NET Framework 2.0
  • .NET Framework 3.0
  • .NET Framework 3.5

For example, if you would like to run the cleanup tool in silent mode and remove the .NET Framework 1.1, you would use a command line like the following:

Cleanup_tool.exe /q:a /c:"cleanup.exe /p .NET Framework 1.1"

One important note – the cleanup tool will not allow you to remove a version of the .NET Framework that is installed as part of the OS it is running on.  That means that even if you try this example command line on Windows Server 2003, the tool will exit with a failure return code and not allow you to remove the .NET Framework 1.1 because it is a part of that OS.

Similarly, you cannot use the cleanup tool to remove the .NET Framework 1.0 from Windows XP Media Center Edition or Windows XP Tablet PC Edition or remove the .NET Framework 2.0 or 3.0 from Windows Vista.  In addition, if you run the cleanup tool on an OS that has any edition of the .NET Framework installed as a part of the OS, it will prevent you from using the .NET Framework - All Versions option because there is at least one version that it cannot remove.

If you are planning to run the cleanup tool in silent mode, you need to make sure to detect what OS it is running on and not pass in a version of the .NET Framework with the /p switch that is a part of the OS or make sure that you know how to handle the failure return code that you will get back from the cleanup tool in that type of scenario.

The cleanup tool returns the following exit codes:

  • 0 - cleanup completed successfully for the specified product
  • 3010 - cleanup completed successfully for the specified product and a reboot is required to complete the cleanup process
  • 1 - cleanup tool requires administrative privileges on the machine
  • 2 - the required file cleanup.ini was not found in the same path as cleanup.exe
  • 3 - a product name was passed in that cannot be removed because it is a part of the OS on the system that the cleanup tool is running on
  • 4 - a product name was passed in that does not exist in cleanup.ini
  • 100 - cleanup was able to start but failed during the cleanup process
  • 1602 - cleanup was cancelled

The cleanup tool creates the following log files:

  • %temp%\cleanup_main.log - a log of all activity during each run of the cleanup tool; this is a superset of the logs listed below as well as some additional information
  • %temp%\cleanup_actions.log - a log of actions taken during removal of each product; it will list files that it finds and removes, product codes it tries to remove, registry entries it tries to remove, etc.
  • %temp%\cleanup_errors.log - a log of errors and warnings encountered druing each run of the cleanup tool

<update date="12/4/2007"> Added new product names that are supported by the latest version of the cleanup tool </update>

<update date="6/9/2008"> Added information about unattended mode and the log files produced by the cleanup tool </update>