Hallo alle zusammen.
Wie kann ich mit AutoIT überprüfen ob ein bestimmtes Programm schon auf dem Rechner installiert ist?
LG und danke
Hallo alle zusammen.
Wie kann ich mit AutoIT überprüfen ob ein bestimmtes Programm schon auf dem Rechner installiert ist?
LG und danke
Warum willst du das mit autoit machen?.
Weil ich für so Standart Programme ein Tool erstellen wollte, welche die Programme automatisch installiert.
Ich hätte nur vorher gerne eine Abfrage ob das Programm schon auf dem Rechner vorhanden ist.
Vielleicht könntest du abfragen ob die bestimmte exe schon am PC ist...
Das hatte ich mir auch schon überlegt.
Ich habs jetzt so gemacht das er im Standartinstallatiospfad sucht, aber was mache ich wenn das jemand vorher in ein anderes Verzeichniss installiert hat?
Sorry für die Fragen, kenne mich in AutoIT noch nicht so gut aus.
Das steht in der Registry. Der Schlüssel war so was wie HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall.
Wer dort steht, den kann man deinstallieren, also ist er auch installiert ;).
Johannes
Ok, danke für den Tipp.
Nur habe ich jetzt das Problem, das zum Beispiel der Adobe Reader nicht darin angezeigtwird obwohl er installiert ist.
Hier sind die ganzen Ordner der Installierten Programme, aber eben auch mit Unterordnern: HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\Folders
Bei einem 64Bit-Windows stehen die 32Bit-Programme in einem etwas anderen Registry-Pfad. Ich habe mal schnell eine Funktion geschrieben, die alle Programme ausliest:
#include <Array.au3>
$array = _GetSoftwareList()
_ArrayDisplay($array)
Func _GetSoftwareList()
Local $sSoftwareList, $iInstance = 0, $sKey, $sName
Local $sRegKey = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
Local $sRegKey32 = 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
Do
$iInstance += 1
$sKey = RegEnumKey($sRegKey, $iInstance)
If @error Then ExitLoop
$sName = RegRead($sRegKey & '\' & $sKey, 'DisplayName')
If $sName <> '' Then $sSoftwareList &= $sName & @CRLF
Until $sKey = ''
$iInstance = 0
Do
$iInstance += 1
$sKey = RegEnumKey($sRegKey32, $iInstance)
If @error Then ExitLoop
$sName = RegRead($sRegKey32 & '\' & $sKey, 'DisplayName')
If $sName <> '' Then $sSoftwareList &= $sName & @CRLF
Until $sKey = ''
If $sSoftwareList = '' Then Return SetError(1, 0, '')
Return StringSplit(StringTrimRight($sSoftwareList, 1), @CRLF, 1)
EndFunc
Ich hab jetzt mal bei einem 32-Bit Windows System nachgeguckt und da ist in der Registry bei Uninstal kein Eintrag für Adobe Reader.
Gibt es noch eine andere Möglichkeit herauszufinden was installiert ist?
Kann AutoIT auch auf Programme und Funktionen in der Systemsteuerung zugreifen?