none
Sript logon - verifica versão do JAVA e reinstala ou não RRS feed

  • Pergunta

  • Prezados,

    Minhas estações utilizam vários sistemas baseados no java, entretanto, deve ser uma versão específica, e como alguns usuários atualizam (sem que fosse pra atualizar), pensei em um script de logon que verificasse se está na versão (ou uma das duas versões) que devem rodar, caso não esteja, deve remover o java e reinstalar.

    Já possuo os scripts de remoção e instalação, no entanto, como poderia executar a verificação deles no script de logon? Ou seja:

    Verificar a versão, se é a versão x ou y, se for, continue rodando restante do script normalmente.

    Se não for, execute a remoção do java e reinstalação.

    Os scripts que possuo são estes (rodando manualmente funcionam):

    java-uninstall.bat

     

    REM <start>
     @echo off
     if not exist c:\temp\. mkdir c:\temp
     REM Export the Uninstall registry keys
     start /wait "" REGEDIT /E c:\temp\registry.tmp HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows\currentversion\uninstall
     REM Filter only the {} keys that Java might be in
     type c:\temp\registry.tmp | find /i "{" | find /i "}]" > c:\temp\uninstall.tmp
     type c:\temp\registry.tmp | find /i "JRE 1" >> c:\temp\uninstall.tmp

     REM Run the Vbscript that uses this file to find Java Sun entries to uninstall
     cscript "java-uninstaller.vbs"
     REM <end>

    java-uninstaller.vbs

              

    On Error Resume Next
     Set WshShell = WScript.CreateObject("WScript.Shell")
     Dim fso, MyFile
     Set fso = CreateObject("Scripting.FileSystemObject")
     Const ForReading = 1, ForWriting = 2
     TempDir = "c:\temp"
     TempISS = "c:\temp\iss"
     LogFile = "uninst.log"
     UnString = " -s -a /s /f1"
     Set MyFile = fso.OpenTextFile(TempDir & "\uninstall.tmp", ForReading)
     Set ts = fso.CreateTextFile(LogFile)
     Set f = fso.CreateFolder(TempISS)

     Do While MyFile.AtEndOfStream <> True
     ReadLineTextFile = MyFile.ReadLine
     Uninstall = ReadLineTextFile
     CLSID = Mid(Uninstall, 73, 38)
     search5 = Instr(Uninstall, "JRE 1")
     search6 = Instr(Uninstall, "]")
     If search5 > 0 AND search6 > 0 Then
     JRE1 = Replace(Mid(Uninstall, search5, search6),"]","") 
     End If

     'DisplayName
     DisplayName=WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & CLSID & "\DisplayName")
     'Publisher
     Publisher=WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & CLSID & "\Publisher")

     'UninstallString
     UninstallString=WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & CLSID & "\UninstallString")

     'JREUninstallString
     JREUninstallString=WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & JRE1 & "\UninstallString")

     If JREUninstallString <> "" Then
     JREUN = Replace(JREUninstallString," -f"," -s -a /s /f")
     ts.writeline JREUN
     Return = WshShell.Run(JREUN , 1, TRUE)
     End If


     'Search for presence of Java and Sun in DisplayName and Publisher
     search1 = Instr(1, DisplayName, "Java", 1)
     search2 = Instr(1, Publisher, "Sun", 1)
     search3 = Instr(1, DisplayName, "J2SE", 1)
     search4 = Instr(1, UninstallString, "setup.exe", 1)
     'Execute removal if there is a match
     Uninstaller="MsiExec.exe /X"&CLSID+" /QN"
     if search1 > 0 or search3 > 0 and search2 > 0 Then 
     ts.writeline Uninstaller

     Set iss = fso.CreateTextFile(TempISS & "\" & CLSID & ".iss")

     'Create Response file for any Java Version
     iss.writeline "[InstallShield Silent]"
     iss.writeline "Version=v6.00.000"
     iss.writeline "File=Response File"
     iss.writeline "[File Transfer]"
     iss.writeline "OverwrittenReadOnly=NoToAll"
     iss.writeline "[" & CLSID & "-DlgOrder]"
     iss.writeline "Dlg0=" & CLSID & "-SprintfBox-0"
     iss.writeline "Count=2"
     iss.writeline "Dlg1=" & CLSID & "-File Transfer"
     iss.writeline "[" & CLSID & "-SprintfBox-0]"
     iss.writeline "Result=1"
     iss.writeline "[Application]"
     iss.writeline "Name=Java 2 Runtime Environment, SE v1.4.0_01"
     iss.writeline "Version=1.4.0_01"
     iss.writeline "Company=JavaSoft"
     iss.writeline "Lang=0009"
     iss.writeline "[" & CLSID & "-File Transfer]"
     iss.writeline "SharedFile=YesToAll"

     If search4 > 0 Then
     ss = Left(UninstallString,search4 + 9)
     setupuninstal = ss & UnString & Chr(34) & TempISS & "\" & CLSID & ".iss" & Chr(34)
     ts.writeline setupuninstal
     Return = WshShell.Run(setupuninstal , 1, TRUE)
     End If
     Return = WshShell.Run(Uninstaller , 1, TRUE)
     End If
     Loop
     MyFile.Close
     fso.DeleteFolder(TempDir)

    installjava.bat

    @ECHO OFF
    echo Instalando Java. . .aguarde.

    set Java32="c:\JAVA\jre-6u23-windows-i586.exe"
    set Java64="c:\JAVA\jre-6u33-windows-x64.exe"

    if not exist %Java32% set missing=%Java32% & goto ERR1
    if not exist %Java64% set missing=%Java64% & goto ERR1

    IF NOT DEFINED PROCESSOR_ARCHITEW6432 (
    IF %PROCESSOR_ARCHITECTURE% EQU x86 (
    goto JA32
    ) ELSE (
    goto JA64
    ))

    :JA64
    %Java64% /s REBOOT=Suppress
    goto JA32

    :JA32
    %Java32% /s REBOOT=Suppress
    goto END

    :ERR1
    echo Unable to file: %missing%
    goto END

    :END
    exit

    Obrigado!


    Edinaldo Oliveira

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    ** Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. **

    ----------------------------------------------------------------------

    Convidem seus colegas para participarem do fórum Technet Brasil, assim todos ganham!!! Para entender melhor como, clique aqui.

    quinta-feira, 8 de janeiro de 2015 12:26

Respostas