Hallo AutoItler
ich habe mal wieder ein Problem und hoffe das ihr mir helfen könnt.
Ich möchte mir gerne verschiedene Installationsskripte für Programme (hier z.B. foobar2000 ) erstellen. Dabei möchte ich vor der Installation überprüfen lassen ob "meine" Systemvariable besteht (funktioniert), ob der Installations-Ordner des Programms existiert (funktioniert) und ob das Programm schon in der Registry steht (funktioniert nicht ).
So das wäre die Vorgeschichte
Nun erstmal das Skript mit allem was dazu gehört
[autoit]#Region - Globale Voraussetzungen
Dim $Software = "Foobar2000 0.9.6.8"
Dim $env_string=EnvGet("SOFTWARE")
Dim $VariableSoftware = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment","SOFTWARE")
Dim $SoftwareReg = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\foobar2000\","DisplayName")
#EndRegion - Globale Voraussetzungen
If $VariableSoftware = 1 Then
SplashTextOn("SystemVariable nicht vorhanden !!","Da die Systemvariable `SOFTWARE´ nicht existiert, kann die verwendete Software
nicht installiert werden. Bitte erstellen Sie umgehend diese Systemvariable", 500, 200, -1, -1, 0, "", 16, "")
Sleep(10000)
SplashOff()
ElseIf FileExists($env_string & $Software & $SoftwareExe) Then
SplashTextOn("Die zu installierende Software ist bereits installiert","Der Installations-Ordner von " & $Software & " ist bereits vorhanden. Für eine Neuinstallation bitte löschen", 500, 200, -1, -1, 0, "", 16, "")
Sleep(10000)
SplashOff()
ElseIf $SoftwareReg = 0 Then
SplashTextOn("Programm noch installiert !!","Das Programm ist in der Registry noch registriert. Bitte deinstallieren", 500, 200, -1, -1, 0,
"", 16, "")
Sleep(10000)
SplashOff()
Else
[/autoit][autoit][/autoit][autoit]ShellExecute("Foobar2000 0.9.6.8.exe")
[/autoit][autoit][/autoit][autoit]; Installationsabfolge
[/autoit][autoit][/autoit][autoit]Exit
[/autoit][autoit][/autoit][autoit]EndIf
[/autoit]So nun wirds ernst (wenigstens für mich ). Wie ich schon oben geschrieben habe funktionieren 2 von den 3 Abfragen, nur die letzte die
nach dem Programm in der Registry suchen soll funktioniert nicht.
Dim $SoftwareReg = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\foobar2000\","DisplayName")
ElseIf $SoftwareReg = 0 Then
SplashTextOn("Programm noch installiert !!","Das Programm ist in der Registry noch registriert. Bitte deinstallieren", 500, 200, -1, -1, 0,
"", 16, "")
Sleep(10000)
SplashOff()
Wie schon erwähnt soll bei dieser Abfrage in der Registry überprüft werden, ob das Programm schon installiert wurde (egal welche Fassung bzw. Version) und wenn dies so ist eine Fehlermeldung in Form einer MessageBox mit Warnhinweis (Die Messagebox funktioniert, nur das andere nicht ).
Ich habe auch schon statt "RegRead" auch "RegEnumVal" und "RegEnumKey" verwendet, funktioniert mit meinem "beschränktem" AutoIt-Wissen leider auch nicht.
Hoffe das Ihr mir helfen könnt
MfG
JeanLuc