Batch Suche nach installierter Applikations GUID
Um eine Installation zu automatisieren lässt man gerne Batches oder CMDs laufen welche eine Software nach der anderen installiert und das System automatisch einrichtet.
Manchmal ist es aber sinnvoll nicht stur jedes Programm einfach zu installieren, sondern vorher zu überprüfen ob sich das zu installierende Programm bereits auf dem Gerät befindet.
Windows speichert die installierten Programme in der Registry ab, diese lassen sich in der Kommandozeile durchsuchen.
Hier ein kleines Beispiel:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | findstr /I /C:"{EB533907-C5BA-42BD-8E86-D55C42701DC6}" && [exec what ever]
In diesem Fall wird [exec what ever] ausgeführt wenn die GUID {EB533907-C5BA-42BD-8E86-D55C42701DC6} gefunden wurde.
Damit wissen wir jetzt, dass das entsprechende Programm bereits installiert ist. Um den Installationsprozess zu überspringen kann mit GOTO gearbeitet werden:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | findstr /I /C:"{B5D0021D-9B5D-4573-A355-9DC5A754DF9B}" && goto NOEXEC
Install.exe
:NOEXEC
In diesem Fall wird die Install.exe ausgelassen und mit :NOEXEC weiter gemacht wenn das Programm bereits installiert ist.
Prüfen auf GUID und Version
Ein von mir gern eingesetzes Script um zu der GUID noch die Versionsnummer zu prüfen:
SET GUID={B5D0021D-9B5D-4573-A355-9DC5A754DF9B}
SET VERSION=3.6.0.0
SET EXECUTABLE=Installer.exe
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | findstr /I /C:"%GUID%" && goto CHECKVERSION
goto NOEXEC
:CHECKVERSION
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%GUID%" | findstr /I /C:"Version" | findstr /I /C:"%VERSION%" && goto NOEXEC
:INSTALL
echo Installation started
%EXECUTABLE%
goto FINISH
:NOEXEC
echo Installation skipped
:FINISH