Zum Inhalt wechseln


Foto

Java Auto Update per GPO/Skript

Windows Server 2003

  • Bitte melde dich an um zu Antworten
8 Antworten in diesem Thema

#1 admin2015

admin2015

    Newbie

  • 2 Beiträge

 

Geschrieben 22. November 2015 - 18:54

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? 



#2 magheinz

magheinz

    Newbie

  • 1.329 Beiträge

 

Geschrieben 22. November 2015 - 19:09

Habt ihr keine Softwareverteilung wie opsi o.ä.?

Eventuell wäre das ja eine Idee. Dann hättest du gleich eine Lösung für alles an Software.



#3 GuentherH

GuentherH

    Super Moderator

  • 19.428 Beiträge

 

Geschrieben 22. November 2015 - 19:16

Habt ihr keine Softwareverteilung

 

.. oder den WSUS und dann über den WSUS Package Publisher -> http://www.gruppenri...-bereitstellen/

 

LG Günther



#4 Sunny61

Sunny61

    Expert Member

  • 22.103 Beiträge

 

Geschrieben 22. November 2015 - 21:31

Weitere HowTos in Sachen WPP/WSUS: http://wsus.de/wpp
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#5 daabm

daabm

    Expert Member

  • 2.110 Beiträge

 

Geschrieben 23. November 2015 - 21:44

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


Greetings/Grüße, Martin

Mal ein gutes Buch über GPOs lesen? Oder ein kleines, aber feines Blog darüber?

Und wenn mir die IT mal auf die Nerven geht - coke bottle design refreshment (-:


#6 NorbertFe

NorbertFe

    Expert Member

  • 30.607 Beiträge

 

Geschrieben 23. November 2015 - 21:50

Naja vielleicht... immerhin arbeitet Adobe grad selbst an der "Abschaffung" von einfachen alternativen Verteilmöglichkeiten, indem man dazu wieder seine Daten abgeben muß. ;) Führt ja vielleicht bei einigen dazu, dass sie eben doch drauf verzichten.

Make something i***-proof and they will build a better i***.


#7 Sunny61

Sunny61

    Expert Member

  • 22.103 Beiträge

 

Geschrieben 24. November 2015 - 09:06

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.
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#8 admin2015

admin2015

    Newbie

  • 2 Beiträge

 

Geschrieben 24. November 2015 - 14:53

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 


#9 Sunny61

Sunny61

    Expert Member

  • 22.103 Beiträge

 

Geschrieben 24. November 2015 - 17:59

Wenn es dir nur um das Installieren und gleichzeitige Deinstallieren von Java geht, hilft dir sicherlich Uninstall2Install weiter. http://wsus.de/uninstall2install Lässt sich alles ganz wunderbar mit dem WPP in Kombination mit dem WSUS benutzen.
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/



Auch mit einem oder mehreren der folgenden Tags versehen: Windows Server 2003