Сделай сам на Delphi: Установка и удаление программ | Программирование на Delphi и не только

Реклама на сайте

Оптовая продажа дров. Продаем дрова березовые колотые с доставкой.

Почитайте!

Нас читают

Статьи о программировании и не только

Mail.Ru

Rambler's Top100

Programming Blogs - BlogCatalog Blog Directory

Сделай сам на Delphi: Установка и удаление программ

06.05.2008 от Иван Ширко

Страница: 1 2 3

  for i := 0 to StrList.Count - 1 do
  begin
    reg.CloseKey;
    //перебираем все подразделы
    reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall\'+strlist[i], False);
    //читаем из каждого раздела параметр DisplayName
    a := reg.ReadString('DisplayName');
    //если а - пустая строка, то читаем параметр QuietDisplayName
    if (a = '') then
      a := reg.ReadString('QuietDisplayName');
    //если a снова пуста, то записываем в нее имя подраздела
    if (a = '') then
      a := StrList[i];
    //читаем командную строку для запуска Uninstall
    b := reg.ReadString('UninstallString');
    //если b - пустая строка, то читаем параметр QuietUninstallString
    if (b = '') then
      b := reg.ReadString('QuietUninstallString');
    //если строка b не пустая, то добавляем параметры в списки: имя ключа, название программы, командная строка
    if (b <> '') then
    begin
      ListBox1.Items.Add(a);
      PathList.Add(b);
      DirList.Add(StrList[i]);
    end;
  end;
 //уничтожаем объект reg
 reg.Free;
end;

При показе формы в ListBox'е отобразятся доступные для удаления\установки программы. Теперь для кнопки "Удалить программу" запишите процедуру для события OnClick:

procedure TForm1.Button1Click(Sender: TObject);
var
 si: TStartupInfo;
 p: TProcessinformation;
 //командная строка
 exe: String;
begin
  //если в ListBox'e выделена строка, то продолжаем
  if (ListBox1.ItemIndex = -1) then
    exit;
  //получаем командную строку для выбранного элемента
  exe := PathList.Strings[ListBox1.ItemIndex];
  //сворачиваем окно нашей программы, запускаем командную строку,
  //дожидаемся завершения удаления\установки приложения и восстанавливаем окно нашей программы

  FillChar( Si, SizeOf(Si), 0);
  with Si do
  begin
    cb := SizeOf(Si);
    dwFlags := startf_UseShowWindow;
    wShowWindow := 4;
  end;
  Application.Minimize;
  Createprocess(nil,pchar(copy(exe, pos(';',exe)+1, length(exe))), nil, nil, false,
                Create_default_error_mode, nil, nil, si, p);
  Waitforsingleobject(p.hProcess, infinite);

Страница: 1 2 3

Рубрики: Delphi, Сделай сам |

Комментарии (28)

  1. Виктор пишет:

    Приятная статья, мне даже очень и очень понравилось!

  2. Алексей Родионов пишет:

    Мне это пригодится.

  3. San пишет:

    Огромное, даже непередаваемое тебе СПАСИБИЩЕ!!!! Мне это очень помогло - у меня курсач по этой теме, и мне его сегодня надо сдать! Одну скачал, а там Дэлфи ругается мол нет дополнительных пакетов(потом нашел, но скачать 140мег не успеваю!)
    Еще раз спасибо! надеюсь прокатит!!! +1000000000

  4. Иван пишет:

    >>San
    Удачной сдачи курсача)

  5. Сергей пишет:

    Получается, чтобы добавить свою прогу в Установка и удаление программ” надо прописаться в реестре?

  6. открытая база пишет:

    Да реально автору спасибо за статейку, все доступно и понятно пошел побывать :)

  7. majormo пишет:

    Статья просто супер!!! ОЧень понравилось! Полезно!

  8. Тритон пишет:

    твой блог мне полезен, практика по делфи, дуб дубом, разбираюсь сижу:(

  9. hevac пишет:

    Скачал программу, спасибки, буду юзать!

  10. lazy пишет:

    спасибо за совет!!Delphi со школы плохо идет, нознать и научиться хочу:))нашел блог твой. Спасибо:))

  11. borland пишет:

    Delphi вобще сложная вещь…ну по крайне мере мне, как начинающему:))а вообще после подумываю изучить Java…говорят ууххх:)сложная хренька:)

  12. Коля пишет:

    Надо попробовать , спасибо за программу.

  13. Andrew пишет:

    Статья хорошая и нужная, спасибо автору.

  14. Генри пишет:

    О сейчас буду пробовать.

  15. Domin пишет:

    Познавательно и интересно. Но, сложно для восприятия моими мозгами. Это мне так показалось или вам тоже? Прошу автора не обижаться.

  16. multimedia пишет:

    Спасибо за информацию, она помогла в решении очень важной для меня проблемы!!! Ура =)))

  17. Вадим пишет:

    А я вот мучаюсь с идентификацией нажатия клавиши Delete на клавиатуре… Использовал для события OnKeyPress условие if Key=#46; Key=VK_DELETE (как у вас в примере вроде) и ничего, сколько раз не нажми на эту клавишу — никакой реакции. Можете подсказать чего-нибудь?

  18. Ильназ пишет:

    Дайте ссылку на Делфи плиз очень нужна!!!!!!=)))))

  19. prays пишет:

    немного можно подправить например добавить инфу об авторе программы читать параметр в реесторе ‘Publisher’ ну и версию проги ‘DisplayVersion’

  20. crystalbit пишет:

    Вадим, с onkeypress действительно что-то не работает, зато на KeyUp например, работает на ура

  21. sharik пишет:

    В свое время зять пытался приобщить меня к дэлфи, ну мне как то не очень!

  22. C0ffe1n пишет:

    Хороший пример, очень полезный. Как говорить респект и уважуха! ;)

  23. Андрей пишет:

    А это не нада?)
    listbox1.Items:=strlist;

  24. Андрей пишет:

    емае я тупой наверно))

  25. Михаил Григорьев пишет:

    Немного добавлю..
    В раздел USES следует прописать Registry,
    т.к. без этого компилятор ругается на:
    ——–
    Reg: TRegistry; //для работы с реестром
    ——–

    Спасибо за внимание..

  26. Артем пишет:

    Спасибо, есть одна задумка, статья помогла в реализации

  27. Last_kamikadze пишет:

    Существует ли возможность выводить именно исполняемые *.exe файлы и потом например выделеные импортировать в рег файл?

  28. andrew пишет:

    киньте ссылку на исходник плиз, а то в новости не работает

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.