Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 91
Благодарности: 7

Профиль | Сайт | Отправить PM | Цитировать


Как добавить дополнительные значения с различными вариантами названия одного и того же приложения в этот код:


Код: Выделить весь код
function InitializeSetup(): Boolean;
var
  ResultCode: Integer;
  ResultStr:string;
begin
Result:=True;
begin
  If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'UninstallString', ResultStr)
then
 begin
  If ResultStr<>''
then
 begin
  ResultStr:=RemoveQuotes(ResultStr);
  if MsgBox('Программа установки обнаружила уже установленную программу.' #13#13 'Вы желаете предварительно удалить ее?', mbInformation, MB_YESNO) = idYes
then
  if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
  MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;

Мне нужно, чтобы мой установщик при запуске находил уже ранее установленное приложение, НЕ только моим, НО и другими установщиками.

К примеру, я и кто-нибудь ещё назвал приложение "My Program", его-то мой установщик найдёт, а если кто-то назвал его "My Prog" или воспользовался "AppId"!

Как быть, есть ли решение? Если ничего другого "общего" нет! Нет в реестре "InstallPath"/"InstallDir".

"My Program" - это так, название уникальное, так, что случайного удаления какого-то другого приложения НЕ произойдёт!

МОЖНО ЛИ ДОПИСАТЬ "My Prog", "My Prog by...", "My Prog v2...", "{BB78D015-6860-433F-BF31-2E0AA5E7F922}" и т.п. в этот код ил и как-то по-другому. Чтобы установщик реагировал только на одно найденное существующее значени и не ругался если их вдруг будет несколько.

Отправлено: 15:46, 30-12-2011 | #523