Jak wykryć starą instalację i usunąć ofertę?

Jak wykryć, czy użytkownik już zainstalował oprogramowanie, a jeśli tak, jak zaoferować możliwość usunięcia starej wersji?

Napisałem kilka wierszy, aby to sprawdzić. Czy na razie to prawda? Jeśli jest to poprawne, jak mogę pozwolić użytkownikowi wybrać, czy chce kontynuować instalację, czy odinstalować starą wersję?

#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;

questionAnswers(1)

yourAnswerToTheQuestion