public override void Remove()
        {
            if (TargetFileSystem.FileExists(PathToConfig))
            {
                TargetFileSystem.DeleteFile(PathToConfig);
            }

            if (TargetFileSystem.DirectoryExists(InstallationPath) &&
                !string.Equals(LocalFileSystem.GetFullPath(BaselineSourcePath), TargetFileSystem.GetFullPath(InstallationPath), StringComparison.OrdinalIgnoreCase))
            {
                try
                {
                    TargetFileSystem.DeleteDirectory(InstallationPath);
                }
                catch (UnauthorizedAccessException)
                {
                    foreach (System.Diagnostics.Process p in Win32ProcessHelper.GetProcessesLockingFile(GetUnremovedFile(InstallationPath)))
                    {
                        Console.WriteLine("File is locked by Process(ID: {0}, NAME: {1}). Killing the process to unlock files", p.Id, p.ProcessName);
                        if (!p.WaitForExit(1000))
                        {
                            Win32ProcessHelper.TerminateProcess(p);
                            p.WaitForExit(5000);
                        }
                    }

                    TargetFileSystem.DeleteDirectory(InstallationPath);
                }
            }
        }
        protected void SetupConfigFromTemplate(string pathToConfig, string pathToTemplate)
        {
            if (LocalFileSystem.FileExists(pathToTemplate))
            {
                if (!TargetFileSystem.FileExists(pathToConfig))
                {
                    Logger.Instance.Log(LogLevel.Info, "\tCreating config '{0}' from '{1}' template",
                                        TargetFileSystem.GetFullPath(pathToConfig),
                                        LocalFileSystem.GetFullPath(pathToTemplate));

                    LocalFileSystem.CopyFile(pathToTemplate, TargetFileSystem, pathToConfig, true);
                }

                EnvironmentHelper.ExpandEnvironmentVariablesInConfig(pathToConfig, TargetFileSystem);
            }
        }
        public override void Setup()
        {
            base.Setup();

            TransferJobs(LocalFileSystem.GetFullPath(PathToConfigTemplate), TargetFileSystem.GetFullPath(PathToConfig));
        }