Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Iconen der Uninstallliste? (https://www.delphipraxis.net/186572-iconen-der-uninstallliste.html)

Mattze 13. Sep 2015 13:17

Iconen der Uninstallliste?
 
Hallo,

ich möchte gerne so eine Uninstallliste basteln, wie sie unter "Produkte und Funktionen" Windows selber anzeigt.
Die Liste selber ist kein Problem. Steht alles in der Registry unter
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Uninstall.
Nur, wie kriege ich die Icons der Einträge.
Für einige gibt es in der Registry das "DisplayIcon". Da ist das auch kein Problem.
Ich habe aber einen Eintrag (TrekStor), der diesen optionalen Wert in der Registry nicht hat und trotzdem mit dem "richtigen" Icon angezeigt wird.
(Obwohl das auch in der Systemimagelist nicht enthalten ist! Allerdings wüsste ich auch nicht, wie ich es da adressieren sollte.)

Weiß jemand, wie man diese Icons kriegt?

(Delphi 7 pro unter Win 7 pro 64)

Gruß
Mattze

Desmulator 13. Sep 2015 15:29

AW: Iconen der Uninstallliste?
 
Ich würde mal stark darauf Tippen, dass das Default-Icon der uninstall.exe ausgewählt wird. Da du den Pfad ja hast, könnte dir ExtractIcon behilflich sein.

Mattze 13. Sep 2015 18:37

AW: Iconen der Uninstallliste?
 
Hallo,

danke, aber das kann so nicht ganz funktionieren.
Für das TrekStor-NAS ist der Uninstallstring in der Registry z. Bsp.
MsiExec.exe /I{07C16B8B-AE11-4515-888F-0BD2E0A9F2AD}
Nix von "uninstall.exe".
Manchmal steht da ein Pfad drin. Da könnte es dann so, wie Du glaubst, klappen.
Aber oft... siehe oben.
(Das steht übrigens auch nicht mit seinem Namen als Schlüssel unter Uninstall, sondern mit einer GUID.)

Wie ich das Icon aus (oder für) eine(r) ordentliche(n) Datei kriege, weiß ich. Absolut kein Problem.
Aber woher nehme ich z.Bsp. in dem obigen Beispiel eine ordentliche Datei mit Pfad?

Gruß
Mattze

Sir Rufo 13. Sep 2015 21:54

AW: Iconen der Uninstallliste?
 
Stellen wir uns doch mal die Frage: Woher weiß MsiExec.exe was denn da deinstalliert werden muss?

Eine GUID kann man nicht deinstallieren, also ... ;)

Mattze 14. Sep 2015 06:20

AW: Iconen der Uninstallliste?
 
Guten Morgen,

und au-ha!!!

Im Schlüssel

HKEY_CLASSES_ROOT\Installer\Products\B8B61C7011EA5 15488F8B02D0E9A2FDA

gibt es tatsächlich einen Wert "ProductIcon".

Und wenn man sich den Schlüssel genau anguckt, dann "entspricht" die letzte Zeichenfolge der "gesuchten" GUID "{07C16B8B-AE11-4515-888F-0BD2E0A9F2AD}". (Die ist sogar Bestandteil des Pfades für das Producticon.)
Das ineinander umzuwandeln ist zwar nicht weiter kompliziert, trotzdem mache ich es mir noch einfacher und frage, ob das schon mal jemand gemacht hat.

Fragt sich, was laufzeitmäßig schneller ist:
1. Konvertieren und direkt zugreifen (Glaube ich!)
2. Alle Einträge "Producticon" von Schlüsseln unter HKEY_CLASSES_ROOT\Installer\Products nach der GUID durchsuchen.

Nun, schaun mer mal...

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz