public void Uninstall(UninstallInfo uninstallInfo)
{
var toRemove = FindComponentsToRemove(uninstallInfo.GetPublicKeyToken());
Console.WriteLine("Components to remove:");
toRemove.ForEach(Console.WriteLine);
Console.WriteLine();
var steps = new List<IUninstallStep>
{
new RemoveFiles(),
new RemoveStartMenuEntry(uninstallInfo),
new RemoveRegistryKeys(_registry, uninstallInfo),
new RemoveUninstallEntry(uninstallInfo)
};
steps.ForEach(s => s.Prepare(toRemove));
steps.ForEach(s => s.PrintDebugInformation());
steps.ForEach(s => s.Execute());
steps.ForEach(s => s.Dispose());
}