Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to delete Folder at uninstallation in C#.NET application?

I have a window .net application named "XYZ", I have created a custom folder named"ABC" (folder may be anywhere other than application path) while using my application after installation.

When i am uninstalling the application all folders are removed but "ABC" folder remain there.

How can I delete 'ABC' folder which resides other than application path?

like image 306
Dhanapal Avatar asked Jul 13 '09 05:07

Dhanapal


1 Answers

You have to use Custom Actions for that:

  1. Add a new library ("CustomActions") to the setup project
  2. Add => New Item => Installer class
  3. Switch to code view and override the Uninstall method

Code:

public override void Uninstall(IDictionary savedState)
{
    base.Uninstall(savedState);

    // Delete folder here.
}

If you don't want to write your own DeleteFolder method add a reference to Microsoft.VisualBasic:

 Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents);
  1. Add the project output (Primary Output) of the CustomActions project to the setup project.
  2. Right click your setup project and click View => Custom Actions
  3. Right click uninstall => Add Custom Action => Application Folder => Primary Output of CustomActions

Note: A great example of this is located here. They explain this example in greater detail. Something that was not obvious in this answer at first was the fact you had to add the Installer Class template within the APPLICATION'S project, NOT the Application's SETUP project. Basically the setup project calls the procs Install() and Uninstall() from any application that is added to the Custom Actions in the setup project. The idea is to override those two procs to inject code to do your bidding...

like image 110
weiqure Avatar answered Sep 22 '22 03:09

weiqure