Aplet dodaj/usuń programy

0

Cześć, słuchajcie czy aby obsłużyć dodaj/usuń programy w delphi wystarczy odpowiedni wpis w rejestrze? Mam taką procedurę, która dodaje wpis w rejestrze i wszystko jest ok:

procedure dodaj;
var
  Registry: TRegistry;
begin
  Registry := TRegistry.Create;
  try
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    Registry.CreateKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Nazwa_programu\');
    Registry.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Nazwa_programu\', True);
    Registry.WriteString('DisplayIcon', 'Lokalizacja_deinstalatora, 0');
    Registry.WriteString('DisplayName', 'Nazwa_programu');
    Registry.WriteString('DisplayVersion', 'wersja');
    Registry.WriteString('InstallLocation', 'Lokalizacja_programu');
    Registry.WriteString('UninstallString', '"Lokalizacja_deinstalatora"');
    Registry.WriteInteger('EstimatedSize', Rozmiar_w_bajtach);
    Registry.WriteInteger('NoModify', 1);
    Registry.WriteInteger('NoRepair', 1);
    Registry.CloseKey;
  except
    Error_code := 4;
    ...
  end;
  Registry.Free;
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);  
end;

Ale mam też taką do usuwania i już nie jest ok, po prostu niekiedy nie usuwa klucza, pomimo, że do programu dodany jest manifest, który wymusza tryb admina. W dodatku polecenie SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); w Windows Vista i 7 odświeża tylko listę po odinstalowaniu, natomiast nie odświeża tego paska na dole z informacjami. Kod do usuwania:

procedure usun;
var
  Registry: TRegistry;
begin
  try
    Registry := TRegistry.Create;
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    Registry.DeleteKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Nazwa_programu\');
    Registry.CloseKey;
  finally
    Registry.Free;
  end;
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);     
end;

Ktoś jeszcze wie coś więcej na temat dodaj/usuń programy i jak odświeżyć ten pasek informacyjny na dole okna w Win Vista i 7?

0

Mógłbyś się jeszcze pokusić czy aplikacja przy instalacji nie stworzyła własnego podklucza (HKLM>Software) na konfiga :) Po co zaśmiecać rejestr.

0

No właśnie nie tworzy, żeby nie zaśmiecać rejestru. Ktoś powie coś mądrego w tej kwestii?

0

chodzi mi, że jak już ręcznie klucze usuwasz z rejestru. Wiekszość aplikacji oprócz tego z uninstall ma w software jeszcze

0

Ale ta nie ma. I chodzi mi o to, czy ktoś ma pomysł na to jak odświeżyć ten pasek na dole w dodaj usuń programy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1