internal InstallResult UninstallCoreInternal(string installDir, IComponent component)
        {
            if (!FileSystemExtensions.ContainsPath(installDir, component.Destination))
            {
                Logger.Warn("Different paths for component and method input");
                return(InstallResult.Failure);
            }

            var restartPending = false;
            var file           = component.GetFilePath();
            var deleteResult   = DeleteFile(file, out var restartRequired);

            restartPending |= restartRequired;
            if (!deleteResult && !restartRequired)
            {
                return(InstallResult.Failure);
            }

            if (restartPending)
            {
                return(InstallResult.SuccessRestartRequired);
            }

            component.CurrentState = CurrentState.Removed;
            return(InstallResult.Success);
        }