第一个问题(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。