Jump to content

Java Auto Update per GPO/Skript


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

 

ich möchte Clients automatisch und permanent mit Java Updates versorgen, bspw. ein mal täglich. Wie stelle ich das am einfachsten an?

 

Es gibt prinzipiell zwei Möglichkeiten, die ich bereits schon mit einem Kollegen durchgekaut habe:

 

1. 

Es gibt ein Skript auf dem Server, welches per Task ausgeführt wird und das aktuellste Java Update runterlädt, die MSI-Datei aus der EXE extrahiert und in einem UNC-Pfad bereitstellt. Auf den Clients wird dann per Gruppenrichtlinien ein Anmeldeskript verteilt, welches die MSI-Datei aus dem UNC-Pfad öffnet und silent installiert.

Ginge das? Wenn ja, wie gehe ich das an?

 

2. Es wird ein Anmeldeskript per Gruppenrichtlinien verteilt, das die aktuellste Javaversion herunterlädt, entpackt und installiert.

Da dadurch ja auf jedem Client der Download durchgeführt wird, wird das Netz ja extrem belastet. Dem ISA-Server könnte man ja dann z.B. sagen, dass die Datei gecached werden soll.

 

Gibt es noch weitere Möglichkeiten? 

Link zu diesem Kommentar

Meine bevorzugte Lösung: Verzicht auf Java (und Flash und Adobe Reader)... Spart viel Kopfschmerz, trägt aber vmtl. nicht zur Lösungsfindung bei :D

Prinzipiell bin auch dafür, aber wir haben nunmal Software die Java auf den Clients braucht. Und bezüglich Player muss die Order vom Ober kommen, dann wird deinstalliert und es bleibt weg.

Link zu diesem Kommentar

Ich habe ein VBS-Skript gefunden.

Man findet nach dem Ausführen des Skriptes die MSI-Datei unter  C:\Users\Administrator\AppData\LocalLow\Oracle\Java\

'JRE_Updater 
'Updates and optionally deploys or removes Java Runtime 
'Last Update: 06/12/2015 
'By Kevin Denham (kevin.denham@gmail.com) 
' 
'=================   Options   ================================== 
'Download=0 if this is a client that is 'not' downloading 
Download=1 
'ModifyJRE=0 if this is a host that is 'only' downloading 
ModifyJRE=1
 
'Location for downloaded files.  Example: FileStore="\\Server\SharedFolder\" 
'Leaving FileStore as "" uses the script's working directory 
FileStore="\\SERVER\NETLOGON\Java"  
 
'0 = Remove JRE, 1 = Update Existing JRE, 2 = Deploy and/or Update JRE 
x86=2 
x64=2 'For x64 bit browsers otherwise use only x86 for x64 systems 
 
'Add any extra Java CLI switches 
'http://docs.oracle.com/javase/8/docs/technotes/guides/install/windows_installer_options.html#A1097528 
'URL Updated for Java 8 Options 
'Example: switches="/s INSTALLDIR=D:\Program Files(x86)\Java\" 
switches32="/s" 
switches64="/s" 
 
On error resume next
 

'Do not edit below this line 
'=================================================================== 
Set App = CreateObject("Shell.Application") 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set oShell = WScript.CreateObject("WScript.Shell")  
Set installer = CreateObject("WindowsInstaller.Installer") 
Set req = CreateObject("MSXML2.XMLHTTP.6.0") 
Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0") 
  
areAdmin = false 
 
'If FileStore was not specified use the script's working directory 
If FileStore = "" Then FileStore = objFSO.GetParentFolderName(WScript.ScriptFullName) & "\" 
file32 = FileStore & "JRE_32bitBrowsers.exe" 
file64 = FileStore & "JRE_64bitBrowsers.exe" 
 
 
If Download = 1 Then 
    If Not objFSO.FolderExists(FileStore) Then objFSO.CreateFolder(FileStore) 
    logFile = FileStore & "JRE_Bundle.log" 
 
    'Create the log that records the last download bundle ID 
    If Not objFSO.FileExists(logfile) Then 
        header = "Current Java Bundle Log: "  
        objFSO.OpenTextFile(logFile, 8, True).WriteLine header  
    End if 
 
    Set openLog = objFSO.OpenTextFile(logFile, 1, True) 
    readLog = openLog.ReadAll 
 
    'Query java.com 
    req.open "GET", "http://www.java.com/en/download/manual.jsp", False 
    req.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64)" 
    req.send()  
    'Parse query response 
    Call parseCheck(" Offline", file32, bundle32) 
    Call parseCheck(" (64-bit)", file64, bundle64) 
End If 
 
Function parseCheck(str, str2, bndl) 
    strArr = split(req.responseText, "Download Java software for Windows" & str) 
    strArr2 = split(strArr(1), Chr(34))  
    bndl = strArr2(2) 
    If instr(readLog, bndl) = false Then 
        objFSO.OpenTextFile(logFile, 8, True).WriteLine Date & "|" & bndl 
        'Our bundle is out-of-date, download latest 
        Call getBundle(str2, bndl) 
    End If  
End Function 
 
Function getBundle(fName, bURL) 
    objXMLHTTP.open "GET", bURL, false  
    objXMLHTTP.send()  
    If objXMLHTTP.Status = 200 Then  
        Set objADOStream = CreateObject("ADODB.Stream")  
        objADOStream.Open  
        objADOStream.Type = 1  
        objADOStream.Write objXMLHTTP.ResponseBody  
        objADOStream.Position = 0    
 
        If objFSO.FileExists(fName) Then objFSO.DeleteFile fName  
        objADOStream.SaveToFile fName  
        objADOStream.Close  
    End if  
End Function 
 
'Compare version numbers 
Function chkArr(arr1, arr2, i) 
    If (CLng(arr1(i)) < (CLng(arr2(i)))) Then  
        chkArr = True 
        Exit Function 
    End If     
    If (UBound(arr1) > i) And (UBound(arr2) > i) Then chkArr = chkArr(arr1, arr2, i + 1) 
End Function 
 
If ModifyJRE = 1 Then 
    If objFSO.FileExists(file32) Then store32 = objFSO.GetFileVersion(file32)  
    If objFSO.FileExists(file64) Then store64 = objFSO.GetFileVersion(file64)  
     
    'Search for old Java installs 
        For Each product In installer.Products 
        'If product is JRE 
        If InStr(product, "26A24AE4-039D-4CA4-87B4-") Then 
            Version = installer.ProductInfo(product, "VersionString") 
            'If installed JRE is 32 bit 
            If Mid(product,29,2) = "32" Then 
                'If installed JRE is out-of-date or we specified removal 
                If (chkArr(Split(Version, "."), Split(store32, "."), CInt(0)) = True) Or x86 = 0 Then 
                    If areAdmin = false Then Call IsElevated 
                    oShell.run("msiexec.exe /x " & product & " /qn"), 1, true 
                    If x86 = 1 Then x86 = 2     
                Else If x86 = 2 Then x86 = 1                      
                End If  
            End If 
            If Mid(product,29,2) = "64" Then 
                If (chkArr(Split(Version, "."), Split(store64, "."), CInt(0)) = True) Or x64 = 0 Then 
                    If areAdmin = false Then Call IsElevated 
                    oShell.run("msiexec.exe /x " & product & " /qn"), 1, true 
                    If x64 = 1 Then x64 = 2 
                Else If x64 = 2 Then x64 = 1 
                End If 
            End If 
        End if  
    Next 
    'If FileStore is UNC, transfer files 
    If  (Mid(FileStore,1,2) = "\\") And ((x86 = 2) Or (x64 = 2)) Then 
        temp = oShell.ExpandEnvironmentStrings("%temp%") 
        Set TypeLib = CreateObject("Scriptlet.TypeLib") 
        tmpFolder = objFSO.CreateFolder(temp & "\" & TypeLib.Guid) 
        objFSO.CopyFile FileStore & "*", tmpFolder, True 
        file32 = tmpFolder & "\" & objFSO.GetFileName(file32) 
        file64 = tmpFolder & "\" & objFSO.GetFileName(file64) 
    End If 
    'Install the latest JRE 
    If x86 = 2 And objFSO.FileExists(file32) Then 
        If areAdmin = false Then Call IsElevated 
        oShell.run(chr(34) & file32 & chr(34) & " " & switches32), 1, true 
    End If 
    If x64 = 2 And objFSO.FileExists(file64) Then  
        If areAdmin = false Then Call IsElevated 
        oShell.run(chr(34) & file64 & chr(34) & " " & switches64), 1, true 
    End If 
    If objFSO.FolderExists(tmpFolder) Then objFSO.DeleteFolder tmpFolder, True 
    'Uninstall the Java Update Scheduler 
    For Each product In installer.Products 
        If InStr(product, "4A03706F-666A-4037-7777-5F2748764D10") Then 
            If areAdmin = false Then Call IsElevated 
            oShell.run("msiexec.exe /X{4A03706F-666A-4037-7777-5F2748764D10} /qn"), 1, true 
        End if 
    Next 
End If 
 
Function IsElevated 
    IsElevated = CreateObject("WScript.Shell").Run("cmd.exe /c ""whoami /groups|findstr S-1-16-12288""", 0, true) = 0 
    If IsElevated = false Then 
        App.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34), "", "runas" 
        wscript.quit  
    Else 
        areAdmin = true 
    End If 
End function 
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...