webdevqa.jp.net

デプロイJava with SCCM / SCUP

Javaアップデートを展開したい約250台のPCのネットワークがあります。配布ソフトウェアとして、SCCM 2012/SCUP2011を使用しています。

注:x86バージョンとx64バージョンの両方をデプロイする必要があります。

したがって、次のルールで2つの更新を作成します。

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があり、ユーザーが新しいバージョンを使用していても、それをインストールしようとします)

どんな助けでも大歓迎です!

1
Sani

最初の問題(Java.exeが実行されている)

私はJavaをインストールするためにPowerShellスクリプトを使用します。これは、(とりわけ)大きな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ビットJavaを64ビットマシンにインストールする)ことに気付くかもしれません。 OSの64ビットチェック後。

このスクリプトをJava exesとともに、解凍して実行するsfxにパッケージ化します。

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

2番目の質問では、Java自動更新をチェックする2つのregキーがあります。

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

それら両方自動更新を無効にするには0に設定する必要があります(Java 1つのキーを読み取り、他のキーを読み取るバージョンもあります)。パッケージを使用してregキーをデプロイします。スクリプトで確認できますが、SCCM 2012s DCMを使用してこれらを構成アイテムとして設定し、それらを修正して常に0になるようにしました。

2
MDMoore313