internal static IEnumerable <IInstallationStep> GetUnInstallationProcedure(params string[] args)
        {
            InitializeEventService(args);

            yield return(new GenerateInstallMachineIds());

            yield return(new StopProcess(InstallUtils.WcProcessName));

            yield return(new UnInstallService(InstallService.ServiceName, InstallService.ExeName));

            yield return(new RemoveUninstallInfoStep());

            yield return(new RemoveAppdataFolder(InstallUtils.GetLocalAppDataFolder(), "Spario"));

            yield return(new RemoveFolder(InstallUtils.GetWCProgramDataFolder()));

            yield return(new RemoveFolder(InstallUtils.GetRoamingAppDataWCFolder()));

            yield return(new RemoveShortcut());

            yield return(new RemoveLavasoftEmptyDirectories(InstallUtils.GetLavasoftProgramDataFolder(), InstallUtils.GetRoamingAppDataLavasoftFolder(), InstallUtils.GetLocalAppDataFolder()));

            yield return(new UpdateInstalledRegistry(false)); // remove Installed

            yield return(new ReportUninstallationResultStep(ReportUninstallationResultStep.InstallState.Ok, "CompleteUninstall"));

            yield return(new SelfDeleteFolder(InstallUtils.fullPathToBeDeleted(InstallUtils.GetInstallFolder()), CommunicationUtils.DataCollector.Version != "1.0.0.0"));
        }