使用SCCM / SCUP部署Java


1

我们有一个大约250个PC的网络,我想部署java更新。作为分发软件,我们使用SCCM 2012 / SCUP 2011。

注意:我需要部署x86和x64版本。

所以我使用以下规则创建了两个更新:

Installable Rule

Registry Value 'HKLM\Software\JavaSoft\Java Runtime Environment\CurrentVersion' exists

Installed Rule

Registry String 'HKLM\Software\JavaSoft\Java Runtime Environment\Java7FamilyVersion' Begins With '1.7.0_11'

现在的问题

  • java.exe正在计算机上运行(例如,由于打开的浏览器窗口):java的更新例程卸载了旧的java版本; 安装例程因为java.exe仍在运行而失败(尽管已经卸载)。下次用户重新启动时,机器上不会安装任何Java

  • 一些用户启用了java的自动更新功能。因此,每当发布新版本时,它都会自动获得更新(这不是问题)。但是在下一个部署周期中SCCM尝试再次安装上一个更新。(7U12发布和autoupdatet,但SCCM仍然有7U11和trys安装,虽然用户有一个较新的版本)

任何帮助表示赞赏!

Answers:


2

第一个问题(Java.exe正在运行)

我使用powershell脚本来安装Java,其中(除其他外)关闭了3大浏览器。我会将其粘贴在下面以供参考:

function Get-ScriptDirectory{
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value
    try {
        Split-Path $Invocation.MyCommand.Path -ea 0
    }
    catch {
    Write-Warning 'You need to call this function from within a saved script.'
    }
}

function Get-Architecture{
    return $(gwmi win32_operatingsystem).OSArchitecture
}


$Path = Get-ScriptDirectory

#Close all instances of IE, Firefox, & Chrome
Get-Process | where {$_.ProcessName -match "iexplore"} | Stop-Process -Force
Get-Process | where {$_.ProcessName -match "chrome"} | Stop-Process -Force
Get-Process | where {$_.ProcessName -match "firefox"} | Stop-Process -Force

#Install
Start-Process -FilePath "$Path\jre-6u41-windows-i586.exe" -ArgumentList "/s /v`"/qb REBOOT=ReallySuppress JAVAUPDATE=0 WEBSTARTICON=0 SYSTRAY=0`"" -Wait

#Also Install the 64-bit JRE if on a 64 workstation
if(Get-Architecture -match "64")
{
    Start-Process -FilePath "$Path\jre-6u41-windows-x64.exe" -ArgumentList "/s /v`"/qb REBOOT=ReallySuppress JAVAUPDATE=0 WEBSTARTICON=0 SYSTRAY=0`"" -Wait
}

#Import reg keys to disable auto updating
reg import "$Path\JavaUpdate.reg"

您可能还注意到它在每台计算机上安装了32位java ,并在64位检查操作系统后在64位计算机上安装64位java。

我将这个脚本与Java exes打包成一个解包并运行的sfx

powershell.exe -executionpolicy bypass -noprofile -file C:\Temp\Java\install.ps1

对于第二个问题,Java检查自动更新有两个reg键:

HKLM\SOFTWARE\JavaSoft\Java Update\Policy\EnableAutoUpdateCheck
HKLM\SOFTWARE\JavaSoft\Java Update\Policy\EnableJavaUpdate

它们必须设置为0才能禁用自动更新(某些版本的Java读取一个密钥,而另一些版本则读取其他密钥)。我可以在脚本中看到使用软件包部署reg密钥,但我也使用SCCM 2012s DCM并将它们设置为配置项,并启用它们以确保它们始终为0。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.