¿Cómo detectar la instalación anterior y ofrecer la eliminación?

¿Cómo detecto si el usuario ya instaló el software y, de ser así, cómo ofrecer la posibilidad de eliminar la versión anterior?

He escrito algunas líneas para comprobar eso. ¿Es correcto por ahora? Si esto es correcto, ¿cómo puedo dejar que el usuario elija si desea continuar con la instalación o desinstalar la versión anterior?

#define UNINSTKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\setupname_is1"

var
  uninstallPath: string;

function InitializeSetup: Boolean;
begin
  if (RegQueryStringValue(HKLM,'{#UNINSTKEY}','UninstallString',uninstallPath)) and
     (uninstallPath <> '') and (fileexists(uninstallPath)) then
  begin
    Result :=
      (MsgBox(CustomMessage('NotVerifiedVersionFound'), mbConfirmation,
              MB_YESNO or MB_DEFBUTTON2) = IDYES);
  end;
  { ... }
end;

Respuestas a la pregunta(1)

Su respuesta a la pregunta