Seite 1 von 1

winst get_link

Verfasst: 27 Sep 2012, 12:58
von pheanex
Kennt jemand eine Möglichkeit an das Ziel einer Windows-Link-Datei heranzukommen?
Mit set_link in winst kann man das ja schön schreiben, aber ein get_link gibt es ja leider nicht!?
Existieren dazu Workarounds?
Im Speziellen wäre das für den Foxit-Reader interessant, da dieser in seinem Programmverzeichnis eine Uninstall.lnk mit Ziel "C:\Windows\System32\msiexec.exe /x {27AEA711-6E07-4615-A575-CE0042B94393}" anlegt.
An diesen String müsste ich jetzt nur noch ein "/passive /qb! REBOOT=ReallySuppress" anhängen und ich könnte bequem jede vorhandene Version des Foxit-Readers innerhalb einer subuninstall.ins deinstallieren.
Alternativ müsste man nur irgendwie an die Produktkennung herankommen, die jedoch in unterschiedlichen Windows-Versionen (va. WinXP) keinen festen Standort in der Registry zu haben scheint.

Re: winst get_link

Verfasst: 27 Sep 2012, 13:22
von tobias
also die Produktkennung sollte eigtl. immer hier liegen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Re: winst get_link

Verfasst: 27 Sep 2012, 13:48
von pheanex
Das Problem hierbei ist nur, dass hier alle Produktkennungen liegen und ich dafür jeden einzelnen Ordner in diesem Pfad nach "Foxit Reader" durchsuchen müsste. Ich weiss nicht ob das momentan mithilfe von winst schon performant möglich ist?
Bzw. gibt es keine einfachere loesung? Bzw. bist du dir sicher dass hier dann auch die 64bit Produktkennungen liegen? Dachte das wäre irgendwo in wow64?

Re: winst get_link

Verfasst: 27 Sep 2012, 13:52
von tobias
uff mit 64bit ist eine interessante frage.
Das Abfragen eines links müsstest du mit nem externen Programm machen dir z.B. nen VBS Script schreiben das sollte iwie gehen. Winst kann das leider nicht so weit ich weis.

Re: winst get_link

Verfasst: 28 Sep 2012, 10:01
von d.oertel
Hi,

der 4.11.3 opsi-winst aus testing
http://download.uib.de/opsi4.0/testing/ ... 3.2-1.opsi
kennt die Funktionen

Code: Alles auswählen

getRegistryKeyList32(<regkey>) //since 4.11.3
getRegistryKeyList64(<regkey>) //since 4.11.3
damit geht dann z.B so was

Code: Alles auswählen

comment "collect Installed MSI IDs'
set $MsiIdRegList$ = getRegistryKeyList32("HKLM\Software\Microsoft\Windows\Currentversion\uninstall")
for %s% in $MsiIdList$ do sub_uninstall_32

set $MsiIdRegList$ = getRegistryKeyList64("HKLM\Software\Microsoft\Windows\Currentversion\uninstall")
for %s% in $MsiIdList$ do sub_uninstall_64
so wird sowohl der 32 als auch der 64 Bit Zweig durchforstet ...

gruß
d.oertel