Versions
Versions
By Robert Tauber 2014/12/08
Tested with opsi xxxxx
requiredWinstVersion >= 4.11.4.12 Robert Tauber 2015/03/13
Die Setup-Daten werden unter Q:\Java\jre_#_x32\ und Q:\Java\jre_#_x64\ mit Ordner abgelegt z.B.: Q:\Java\jre_#_x32\jre1.8.0_40\jre1.8.0_40.msi (den Speicher Ort des Netzlaufwerks Q: bestimmt die map_Q.exe ..\opt_pcbin\install\!drivemap\map_Q.exe)
Tree (..\opt_pcbin\install\!drivemap):
map_Q.exe
Tree (Q:\Java):
CopyFolder.exe
jre_#_x32\jre1.8.0_40\jre1.8.0_40.msi
jre_#_x64\jre1.8.0_40_x64\jre1.8.0_40.msi
Tree (..\Java):
OPSI\control
CLIENT_DATA\javavm.ins
CLIENT_DATA\deljvm.ins
CLIENT_DATA\subdeljava.ins
CLIENT_DATA\Uninstall_Java.exe
CLIENT_DATA\java.png
[Package] version: 2014.12.08 depends: incremental: False [Product] type: localboot id: javavm name: Oracle Java Runtime Environment description: Java 7 advice: version: 0 priority: 0 licenseRequired: False productClasses: jre setupScript: javavm.ins uninstallScript: deljvm.ins updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductProperty] type: unicode name: install_architecture multivalue: False editable: False description: which architecture (32/64 bit) has to be installed values: ["32 only", "64 only", "both", "system specific"] default: ["both"] [ProductProperty] type: unicode name: javaversion multivalue: False editable: False description: which version has to be installed (JRE 1.6.x or JRE 7 = 1.7.x) values: ["jre6", "jre7"] default: ["jre7"]
Kopieren und Umbenennen
Später ermitteln der Version Nummer
#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.8.1 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include <File.au3> #include <Array.au3> Local $sPath = @ScriptDir Local $aPath = StringSplit( @ScriptDir, "\" ) Local $sPathTo = "C:\Temp\" & $aPath[$aPath[0]] local $extention = ".msi" ;_ArrayDisplay($sFolderList, "$Folderolder") ;MsgBox ( 1, "Zeil Pfad", $sPathTo ) DirRemove ( $sPathTo , 1 ) Local $sFolderList = _FileListToArray($sPath , "*" , 2 ) local $i = 0 For $i = 1 to $sFolderList[0] Local $sFileList = _FileListToArray($sPath & "\" & $sFolderList[$i] , "jre*" , 2 ) if $sFileList <> 0 Then if $sFileList[0] = 1 Then ;_ArrayDisplay($sFileList, "$sFileList") $sFrom = $sPath & "\" & $sFolderList[$i] & "\" & $sFileList[$sFileList[0]] $sTo = $sPathTo & "\" & $sFolderList[$i] DirCopy ( $sFrom, $sTo, 9 ) ;DirRemove ( $sFrom ,1 ) ;MsgBox ( 1, "OK", $sFrom & " => " & $sTo & " " & @error ) Else MsgBox ( 1, "ERROR", "Mehr als ein Subfolder in: " & $sPath & "\" & $sFolderList[$i] ) _ArrayDisplay($sFileList, "$sFileList") EndIf Else ;MsgBox ( 1, "No Subfolders in: ", $sPath & "\" & $sFolderList[$i] ) endif Local $sFileList = _FileListToArray($sPathTo & "\" & $sFolderList[$i] , "*" & $extention , 1 ) if $sFileList <> 0 Then if $sFileList[0] = 1 Then ;_ArrayDisplay($sFileList, "$sFileList") $sFrom = $sPathTo & "\" & $sFolderList[$i] & "\" & $sFileList[1] $sTo = $sPathTo & "\" & $sFolderList[$i] & "\" & $sFolderList[$i] & $extention FileMove ( $sFrom, $sTo) ;MsgBox ( 1, "OK", $From & " => " & $to ) Else MsgBox ( 1, "ERROR", "Mehr als eine *.MSI in: " & $sPath & "\" & $sFolderList[$i] ) _ArrayDisplay($sFileList, "$sFileList") EndIf Else ;MsgBox ( 1, "No *.MSI Files in: ", $sPath & "\" & $sFolderList[$i] ) endif Next Exit
Ich will das ganze bei Gelegenheit vereinfachen bin aber bisher nicht dazu gekommen
; Robert Tauber in anlenung an Paket von uib gmbh ; Update was ist zu tun? ; 1. Hol dir die Aktuelle version 32 und 64 bit ; http://java.com/de/download/windows_manual.jsp?locale=de ; 2. Startet die instalation aber klikt nicht auf [Instaliren] ; 3. Öfnet den Pfaht ; C:\Users\%USERNAME%\AppData\LocalLow\Sun\Java ; 4. Kopirt dort die ortner ; jre1.7.0_45 ; jre1.7.0_45_x64 ; oder so änlich ; 5. Fügt sie unter ; \\OPSI4\opsi_workbench\localboot\javavm\CLIENT_DATA\Java ; ein ; 6. Ändere die Variablen so das sie zum neuen Ortner passen ; set $AktMsi32$ = "jre1.7.0_45.msi" ; set $AktMsi64$ = $AktMsi32$ ; Set $msi32path$ = "%ScriptPath%\Java\jre1.7.0_45" ; Set $msi64path$ = "%ScriptPath%\Java\jre1.7.0_45_x64" ; 7. Teste es :-P ; ; Kompatibel für Win 7 ; Vemutlich nicht Kompatibel mit Win 2000 ; Header der Ursprünglichen pakets ;=========================================== ; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib ; and published under the Terms of the General Public License. ;see ;http://www.oracle.com/technetwork/java/javase/silent-136552.html ;http://www.oracle.com/technetwork/java/javase/jre-install-137694.html ;=========================================== [Aktionen] requiredWinstVersion >= "4.10.8.3" setLogLevel = 5 Message "Installing Oracle Java Virtual Machine jre 1.6 or jre 1.7..." DefVar $ExitCode$ DefVar $INST_MsVersion$ DefVar $INST_SystemType$ DefVar $INST_architecture$ DefVar $JAVAVERSION$ DefVar $JAVA32_VER$ DefVar $JAVA64_VER$ DefVar $InstallPlugins$ DefVar $MySystemRoot$ DefVar $success$ DefVar $AktMsi32$ DefVar $AktMsi64$ DefVar $msi32path$ DefVar $msi64path$ DefVar $msiinstall$ DefVar $InstalledJavaExe$ DefVar $Temp$ DefVar $WinstRegKey$ DefVar $Flag$ Set $WinstRegKey$ = "HKLM\SOFTWARE\opsi.org\winst" Set $Flag$ = GetRegistryStringValue32("["+$WinstRegKey$+"] "+"RebootFlag") DefStringlist $INST_MsVersionMap$ set $Temp$ = EnvVar("TEMP") Set $INST_SystemType$ = GetSystemType set $INST_MsVersion$ = GetMsVersionInfo set $INST_MsVersionMap$ = GetMSVersionMap set $INST_architecture$ = GetProductProperty("install_architecture","64 only") ; "system specific" "both" "64 only" "32 only" set $MySystemRoot$ = "%"+"systemroot"+"%" set $success$ = "true" ;set $JAVA32_EXE$="jre-7u25-windows-i586.exe" ;set $JAVA64_EXE$="jre-7u25-windows-x64.exe" set $AktMsi32$ = "jre_#_x32.msi" set $AktMsi64$ = "jre_#_x64.msi" Set $msi32path$ = "C:\Temp\Java\jre_#_x32" Set $msi64path$ = "C:\Temp\Java\jre_#_x64" ;set $AktMsi32$ = "jre1.7.0_45.msi" ;set $AktMsi64$ = $AktMsi32$ ;Set $msi32path$ = "c:\temp\Java\jre1.7.0_45" ;Set $msi64path$ = "c:\temp\Java\jre1.7.0_45_x64" ;Set $msi32path$ = "%ScriptPath%\Java\jre1.7.0_45" ;Set $msi64path$ = "%ScriptPath%\Java\jre1.7.0_45_x64" set $JAVAVERSION$ = GetProductProperty("javaversion","jre7") set $msiinstall$ = "True" set $InstallPlugins$ = "IEXPLORER=1 MOZILLA=1" ;RT: Speicher platz Überprüfen if not(HasMinimumSpace ("%SYSTEMDRIVE%", "200 MB")) LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for Java 1.6 or 1.7" isFatalError ; Stop process and set installation status to failed endif ;RT: Betribssystem ok if $INST_MsVersion$ < "6.0" LogError "Minimum Windows Vista is required for this Skript" isFatalError endif ;RT Bild herzeigen ShowBitmap "%scriptpath%\java.png" "Oracle Java VM" if not ($Flag$ = "1" ) Message "Un-Installing Oracle Java Virtual Machine jre 1.6 or jre 1.7..." ;RT unterprog aufrufen ; deinstalirt Java (Umbau auf Auto it skript vieleicht mit exitcode check) if FileExists("%ScriptPath%\subdeljava.ins") comment "start uninstall" sub "%ScriptPath%\subdeljava.ins" endif Set $Flag$ = "1" Registry_SaveRebootFlag ExitWindows /ImmediateReboot endif if ($Flag$ = "1" ) comment "installing" Set $Flag$ = "0" Registry_SaveRebootFlag DosInAnIcon_Q DosInAnIcon_Copy ;RT: Instaliert Java 32 ; + Beschreibung der daten beschafung if (($INST_SystemType$ = "x86 System") and ($INST_architecture$ = "system specific")) or ($INST_architecture$ = "both") or ($INST_architecture$ = "32 only") ;RT: da vorher uninstall macht doch nut Firefox sin comment "kill a running firefox" Message "Installing Oracle Java Virtual Machine 32 bit ..." killtask "firefox.exe" killtask "jqs.exe" killtask "java.exe" killtask "javaw.exe" ;RT: Scheint notwendig zu sein habs noch net ohne getestet if $INST_SystemType$ = "64 Bit System" comment "registry hack for silent install 32 bit on 64 Bit Systems" ; see http://www.myitforum.com/forums/tm.aspx?high=&m=215451&mpage=1#215451 Registry_redirect_64_profile_image_to_32 /64bit endif if $msiinstall$ = "True" Execwith_autoit_close_proxy "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo Execwith_autoit_zertifikat "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo ;Winbatch_oracle_silent_install_32 Winbatch_oracle_msi_install_32 Sub_check_exitcode endif Message "Check Java Virtual Machine 32 bit ..." ;RT: weis net was das macht if CompareDotSeparatedNumbers("%WinstVersion%","4.11.2") >= "0" includelog "c:\tmp\"+$JAVA32_VER$+"_x86.log" "20" endif Killtask "autoit3.exe" ;RT: Scheinbar der Zweite teil des "registry hack" zu sein if $INST_SystemType$ = "64 Bit System" comment "registry hack for silent install 32 bit on 64 Bit Systems" Registry_redirect_64_profile_image_to_64 /64bit endif ;RT: Überprüfen was instalirt wurde Set $InstalledJavaExe$ = "%ProgramFilesDir%\java\" +$JAVAVERSION$ +"\bin\java.exe" DOSInAnIcon_java_version comment "disable auto updater" ; see http://wpkg.org/Java Winbatch_oracle_silent_disable_update ;Sub_check_exitcode Registry_disable_update ;Files_del endif ; 32 Bit if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")) comment "kill a running firefox" Message "Installing Oracle Java Virtual Machine 64 Bit..." killtask "firefox.exe" killtask "jqs.exe" killtask "java.exe" killtask "javaw.exe" if ($INST_MsVersion$ = "6.0") and ("1" < getValue("product_type_nr",$INST_MsVersionMap$)) and ($INST_SystemType$ = "64 Bit System") ;LogWarning "silent installation on 2008x64 doesn't works at the moment" ;Files_create_low_dir comment "on 2008x64 we working with msi" Set $msiinstall$ = "True" endif ;killtask "msiexec.exe" ;killtask "msiexec.exe" ;killtask "msiexec.exe" ;killtask "msiexec.exe" if $msiinstall$ = "True" Execwith_autoit_close_proxy "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo Execwith_autoit_Wrapper "%SCRIPTPATH%\autoit3.exe" WINST /letThemGo Winbatch_oracle_msi_install_64 Sub_check_exitcode endif if CompareDotSeparatedNumbers("%WinstVersion%","4.11.2") >= "0" includelog "c:\tmp\"+$JAVA64_VER$+"_x64.log" "20" endif Killtask "autoit3.exe" comment "disable auto updater" ; see http://wpkg.org/Java Registry_disable_update /64Bit Set $InstalledJavaExe$ = "%ProgramFiles64Dir%\java\" +$JAVAVERSION$ +"\bin\java.exe" DOSInAnIcon_java_version ;Files_del endif ; 64 Bit if not ($success$ = "true") logError "Fatal: one or more installations are failed " isFatalError endif endif ; zusätzliches File möglich ;if FileExists("%ScriptPath%\custom_ins_dir\custom.ins") ; sub "%ScriptPath%\custom_ins_dir\custom.ins" ;endif ExitWindows /Reboot ;=============================================================================== [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ ;isFatalError set $success$ = "false" endif endif endif endif [DosInAnIcon_Q] "p:\!drivemap\map_Q.exe" [DosInAnIcon_Copy] "Q:\Java\CopyFolder.exe" ;RT: Autoit Killt nerfige abfragen [Execwith_autoit_close_proxy] WinWait("Verbindung","Verbindung") Sleep(500) ; activating WinActivate("Verbindung","Verbindung") send ("!{F4}") exit [Execwith_autoit_zertifikat] WinWait("Sicherheitshinweis") Sleep(500) ; activating WinActivate("Sicherheitshinweis") send ("J") exit ; wird im 64 bit teil verwendet [Execwith_autoit_Wrapper] WinWait("Error") Sleep(500) ; activating WinActivate("Error") send ("ENTER") exit ;RT: setup mit MSI [Winbatch_oracle_msi_install_32] msiexec /i "$msi32path$\$aktmsi32$" /qb! /lie+ "c:\tmp\$JAVA32_VER$_x86.log" ADDLOCAL=ALL $InstallPlugins$ REBOOT=ReallySuppess SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 ARPURLUPDATEINFO='http://www.opsi.org' ; /qb! [Winbatch_oracle_msi_install_64] msiexec /i "$msi64path$\$aktmsi64$" /qb! /lie+ "c:\tmp\$JAVA64_VER$_x64.log" ADDLOCAL=ALL $InstallPlugins$ REBOOT=ReallySuppess SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 ARPURLUPDATEINFO='http://www.opsi.org' ; /qb! ;RT: vieleicht geht das [Winbatch_oracle_silent_install_32] c:\tmp\$JAVA32_EXE$ /s /v"/qb! /lie+ c:\tmp\$JAVA32_VER$_x86.log ADDLOCAL=ALL $InstallPlugins$ REBOOT=ReallySuppess SYSTRAY=0 JAVAUPDATE=0 JU=0 AUTOUPDATECHECK=0 ARPURLUPDATEINFO='http://www.opsi.org'" ;RT Regestry Hack [Registry_redirect_64_profile_image_to_32] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18] set "ProfileImagePath"=REG_EXPAND_SZ:"$MySystemRoot$\syswow64\config\systemprofile" [Registry_redirect_64_profile_image_to_64] openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18] set "ProfileImagePath"=REG_EXPAND_SZ:"$MySystemRoot$\config\systemprofile" ;RT: Welches Java ist drauf? [DOSInAnIcon_java_version] "$InstalledJavaExe$" -version [DOSInAnIcon_instalation_abgeschlossen] @echo off tasklist |find /i "prog.exe" >nul :while1 if %errorlevel% == 0 ( tasklist |find /i "msiexec" >nul goto :while1 ) echo 1 [Winbatch_oracle_silent_disable_update] ;RT: Scheint vorhanden zu sein und zu funktioniren msiexec /x {4A03706F-666A-4037-7777-5F2748764D10} /qb-! [Registry_disable_update] ;RT: und nochmal updates off openkey [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Update\Policy] set "EnableJavaUpdate"=REG_DWORD:0 ;RT: wird nicht aufgerufen [winbatch_start_taskmgr] taskmgr.exe [Files_del] delete -sf "c:\temp" ;delete -f "c:\tmp\$aktmsi64$" ;delete -f "c:\tmp\$aktmsi32$" ;delete -f "c:\tmp\Data1.cab" [Registry_SaveRebootFlag] openKey [$WinstRegKey$] set "RebootFlag" = "$Flag$"
erlaubt es die subdeljava. als uninstall aufzurufen
; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib ; and published under the Terms of the General Public License. [Aktionen] requiredWinstVersion >= "4.10.8.3" Message=Deinstalling Oracle Java Virtual Machine 1.6 ... DefVar $UninstallCommand$ DefVar $DisplayName$ DefVar $ExitCode$ if FileExists("%ScriptPath%\subdeljava.ins") comment "start uninstall" sub "%ScriptPath%\subdeljava.ins" endif [Winbatch_oracle_uninstall] $UninstallCommand$
Da das updaten der Reg keys mir zu blöd war lass ich jetzt ein Skript danach suchen. Wer befürchtet das dies vielleicht mal zu viel erwischt kann auch die Version von uib verwenden.
; Robert Tauber 2013 ; RT: Mögliches Zusatz File ;if FileExists("%ScriptPath%\custom_ins_dir\prevent_uninstall.ins") ; sub "%ScriptPath%\custom_ins_dir\prevent_uninstall.ins" ;endif ;RT: Sartmenü Aufreumen LinkFolder_Webstart_delete ;RT: JAVA Runterschmeisen Message "Un-Installing (Kann dauern)" Winbatch_deinstall Message "Un-Installing Komplet" ;RT: Exit Code Auswerten Sub_check_exitcode ;RT: Runter mit Java das AutoIt Skript killt alle Java versionen [Winbatch_deinstall] %SCRIPTPATH%\Uninstall_Java.exe ;RT: Killt den Shot key im Startmenü konte keinen finden [LinkFolder_Webstart_delete] set_basefolder common_programs delete_subfolder "Java" delete_subfolder "Java Web Start" ;RT: Exit cod Checken [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1603") comment "A fatal error occurred during installation. 1603" comment "Quite normal while uninstalling java autoupdater" comment "for other uninstalls might be a problem" else if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif endif
SAD (search and destroy) Skript<
#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.8.1 Author: Robert Tauber Script Function: Deinstalirt alle Java Versionen #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here DirCreate("c:\temp\") Opt("WinTitleMatchMode", -2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase ;Reg Key auslesen Run(@ComSpec & " /c " & 'start /wait "" REGEDIT /E c:\temp\registry.tmp HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows\currentversion\uninstall' ,"", @SW_HIDE) Run(@ComSpec & " /c " & 'start /wait "" REGEDIT /E c:\temp\registry2.tmp HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\windows\currentversion\uninstall' ,"", @SW_HIDE) ;winwait ("cmd.exe") WinWaitClose ("cmd.exe") ;Filter die keys mit {} Run(@ComSpec & " /c " & 'type c:\temp\registry.tmp | find /i "{" | find /i "}]" > c:\temp\REG.tmp' ,"", @SW_HIDE) Run(@ComSpec & " /c " & 'type c:\temp\registry2.tmp | find /i "{" | find /i "}]" >> c:\temp\REG.tmp' ,"", @SW_HIDE) ;winwait ("cmd.exe") WinWaitClose ("cmd.exe") $file = FileOpen("c:\temp\REG.tmp", 0) $Java = FileOpen("c:\temp\JAVA_REG.tmp", 2) ;RT: Könte effektiver sein wenn man das ursprüngliche file con key zu key durchsucht While 1 Local $line = FileReadLine($file) If @error = -1 Then ExitLoop $KEY = StringReplace($line, "[", "") $KEY = StringReplace($KEY , "]", "") ;RT: den inhalt aller {} KEYs Temporär als Text file sichern Run(@ComSpec & " /c " & 'start /wait "" REGEDIT /E c:\temp\KEYS.tmp ' & $KEY ,"", @SW_HIDE) winwait ("cmd.exe") WinWaitClose ("cmd.exe") $file_KEY = FileOpen("c:\temp\KEYS.tmp", 0) While 1 ;RT: Das gerade erstellte textfile nach JER Durchsuchen (JAVA) Local $line_KEY = FileReadLine($file_KEY) If @error = -1 Then ExitLoop if StringInStr ($line_KEY, "jre") then ;RT: wurde in dem Key eine jre gefunden (JAVA) Local $Split = StringSplit($KEY, "{") $KEY = "{" & $Split[2] ;RT: Schreib die gefundenen keys in das file FileWrite ( $Java , $KEY & @CRLF) ExitLoop endif WEnd FileClose ( $file_KEY ) ;RT: File schlisen da sonst fehler Wend FileClose ( $file ) FileClose ( $Java ) ;RT: Alle gefundenen Deinstaliren $Java = FileOpen("c:\temp\JAVA_REG.tmp", 0) While 1 Local $line = FileReadLine($Java ) If @error = -1 Then ExitLoop Run(@ComSpec & " /c " & 'MsiExec.exe /qn /X'& $line &' /norestart') WEnd ;winwait ("cmd.exe") WinWaitClose ("msiexec") Sleep(5000) Winkill ("cmd.exe") ;MsgBox ( 0, "title", "text")