private void UninstallProgram(RegistryEntryGridRow program) { var pathEnd = program.UninstallString.IndexOf(".exe") + 4; if (ProgramUninstallPathHasParams(pathEnd, program)) { ExecuteUninstallProcess(() => Process.Start(program.UninstallString)); } else { var paramsIndex = program.UninstallString.IndexOf(' ', pathEnd); var programLocation = program.UninstallString.Substring(0, paramsIndex); var programParams = program.UninstallString.Substring(paramsIndex + 1); ExecuteUninstallProcess(() => Process.Start(programLocation, programParams)); } }
private bool ProgramUninstallPathHasParams(int pathEnd, RegistryEntryGridRow program) { return(pathEnd == program.UninstallString.Length || pathEnd + 1 == program.UninstallString.Length); }