Cerrar
InicioAzureMicrosoft Intune: Instalación de Java

Microsoft Intune: Instalación de Java

Este será “un artículo repetido”, porque en su momento había publicado como instalar Adobe vía Intune utilizando un .exe y un script de PowerShell [Microsoft Intune: Instalación de Adobe Acrobat]. Este artículo viene a “reforzar” que de la “misma forma” podemos instalar diferentes aplicaciones, simplemente como modificar dos o tres líneas de “código” en los scripts que había publicado.

La idea y el proceso sigue siendo el mismo:

  1. Detectar si tenemos una versión anterior instalada de la misma aplicación
  2. Si existe comprobamos que es una versión anterior a la nuestra, si es así, continuamos
  3. Buscamos las versiones anteriores de la aplicación y las desinstalamos, posteriormente instalamos la nueva versión
  4. Comprobamos (podemos hacerlo de muchas formas, MSI, Registro, Carpetas, Scripts, etc..) que se ha instalado correctamente

Hay aplicaciones que por diseño el fabricante crea una tarea programada que la actualizará automáticamente, Adobe es una de ellas, por lo que si somos de los que no queremos perder el control de las versiones que tenemos instaladas, tenemos que evitar que se actualicen solas. Pero bueno, antes de llegar ahí os muestro la infografía:

Como os comentaba, con estos scripts que os voy a mostrar a continuación nos servirán para desplegar casi cualquier app vía Intune de forma sencilla. Si la aplicación es un paquete MSI ya no deberías necesitar estos scripts, siempre y cuando el .msi se encargue de quitar/actualizar la versión del mismo software que queréis instalar, sino siempre os vendrán muy bien estos scripts.

En este caso en concreto, quiero actualizar una versión de Java 8u351 por la 8u361, pero quiero asegurarme de que antes desinstalo la versión 8u351 y no tener dos (o más) versiones de Java en los equipos. Oracle si pagas te dará el MSI, pero sino tienes el .exe disponible sin problema (el cual también tiene el MSI dentro :-)). Con el .exe es suficiente, pero como realmente la instalación se realiza con el .msi que va empaquetado en su .exe dejará una clave en el registro la cual podemos identificar fácilmente para luego automatizar la desintalación de la versión que queramos. Dicho esto, aquí va el script que utilizo para detectar si existe una versión anterior instalada a la versión que quiero instalar:

$JavaVersion = (gwmi Win32_Product -filter “name like ‘Java%3%’ AND vendor like ‘Oracle%'”).version
if ($JavaVersion –lt “8.0.3610.9”) {
Write-Output “To be updated
Exit 0
}
else {
Write-Host “Ya tienes la versión de Java instalada”
}

Si la salida es TRUE entonces devuelvo un texto (el que queráis) vía Write-Output para que Intune lo tome como referencia, este script yo lo publico en la sección de requisitos. De esta forma, le indico a Intune que tiene que continuar con el proceso en el equipo que lo chequee:

Una vez que hemos comprobado que la versión de Java que tiene instalada el equipo es inferior (-lt) a la versión que quiero instalar, entonces ejecuto el script de PowerShell que llevo dentro del paquete .intunewim que he creado previamente:

# Restart Process using PowerShell 64-bit
If ($ENV:PROCESSOR_ARCHITEW6432 -eq “AMD64″) {
Try {
&”$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe” -File $PSCOMMANDPATH
}
Catch {
Throw “Failed to start $PSCOMMANDPATH”
}
Exit
}

$JavaInst = gwmi Win32_Product -filter “name like ‘Java%’ AND vendor like ‘Oracle%'”
Foreach ($IdentifyingNumberKey in $JavaInst) {Start-Process Msiexec.exe -Argument “/X $($IdentifyingNumberKey.IdentifyingNumber) /qn” -Wait}
Start-Process jre-8u361-windows-i586.exe -ArgumentList “/s”

La línea $JavaInst xxx lo que hago es buscar los identificadores de instalación de cualquier software que se llame Java y además el vendor sea Oracle, de esta forma luego en la siguiente línea (Foreach) podré desinstalar cada uno de los productos. Por último, en la línea de Start-Process instalo la versión de Java que he llevado vía .intunewim.

En la siguiente captura os muestro donde le indico el proceso de instalación (que en mi caso es instalar la nueva y quitar la anterior) y además, si necesito desinstalar la versión de Java que estoy instalando vía Intune, ya le indico el comando de desinstalación. Como ya se lo tengo que prestablecer y lo hacemos vía MsiExec /x {GUID} /qn, primero tengo que buscar el identificador de instalación (igual que con el Script:  Foreach ($IdentifyingNumberKey in $JavaInst) {Start-Process Msiexec.exe -Argument “/X $($IdentifyingNumberKey.IdentifyingNumber) /qn” -Wait} pero de forma previa):

Ahora, por último, con otro script le voy a indicar como voy a comprobar que se ha instalado la versión que he querido .. vamos, seguro que ya tenéis claro como será:

# Restart Process using PowerShell 64-bit
If ($ENV:PROCESSOR_ARCHITEW6432 -eq “AMD64″) {
Try {
&”$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe” -File $PSCOMMANDPATH
}
Catch {
Throw “Failed to start $PSCOMMANDPATH”
}
Exit
}

$JavaVersion = (gwmi Win32_Product -filter “name like ‘Java%3%’ AND vendor like ‘Oracle%'”).version
if ($JavaVersion -eq “8.0.3610.9”) {
    Write-Host “You already have the software installed”
    Exit 0
}
else {
Write-Host “Installation must be retry”
Exit 1618
}

Y esto lo configuramos en la siguiente pantalla [Detection Rules] del asistente de publicación del paquete .intunewim:

Ahora quedaría publicarlo y esperar resultados, en mi caso han fallado dos …

Y si los revisamos vemos que son errores sencillos de corregir:

Antes de continuar con otra cosa, os dejo otro script donde en vez de comprobar la versión producto vía identificador de instalación (por sino fuera posible) lo hacemos buscando la versión del ejecutable de la aplicación:

$FilezillaPath = “C:\Program Files\FileZilla FTP Client\filezilla.exe”
if (Test-Path $FilezillaPath) {
  $FilezillaVersion = (Get-Item “$FilezillaPath”).VersionInfo.FileVersion
   if ($FilezillaVersion -lt “3, 62, 2, 0”) {
Write-Output “To be installed”
Exit 0
}
}
else {
Write-Output “To be installed”
Exit 0
}

Con estas dos comprobaciones casi ya tenemos todas las opciones posibles, o por lo menos las más habituales.

Por último, os había comentado al principio del artículo que muchas aplicaciones nos crean una tarea programada para buscar actualizaciones de forma automática y en muchos casos ya se actualizan solas. Esto está muy bien, pero si somos de los que queremos controlar las versiones de software que tenemos desplegadas (por seguridad, normativa y/o compatibilidades), pues debemos borrar dicha tarea. Aquí os dejo el “código” que tenéis que añadir en sendos scripts para evitar que esto ocurra:

  • Adobe Acrobat
    • Get-ScheduledTask | where {$_.TaskName -like “*Acrobat*Update*”} | Unregister-ScheduledTask -Confirm:$False
  • Google Chrome 
    • REG ADD “HKLM\SOFTWARE\Policies\Google\Update” /v UpdateDefault /t REG_DWORD /d 0 /f
    • REG ADD “HKLM\SOFTWARE\Policies\Google\Update” /v DisableAutoUpdateChecksCheckboxValue /t REG_DWORD /d 1 /f
    • REG ADD “HKLM\SOFTWARE\Policies\Google\Update” /v AutoUpdateCheckPeriodMinutes /t REG_DWORD /d 0 /f
    • REG ADD “HKLM\SOFTWARE\Wow6432Node\Google\Update” /v UpdateDefault /t REG_DWORD /d 0 /f
    • REG ADD “HKLM\SOFTWARE\Wow6432Node\Google\Update” /v DisableAutoUpdateChecksCheckboxValue /t REG_DWORD /d 1 /f
    • REG ADD “HKLM\SOFTWARE\Wow6432Node\Google\Update” /v AutoUpdateCheckPeriodMinutes /t REG_DWORD /d 0 /f

Ahora solo quedaría enviárselo a los equipos directamente desde la sección de Scripts de Intune y listo:

Importante: los scripts solo se ejecutan una vez en los equipos, no lo vuelven a hacer a menos que modifiquéis el script o la publicación del mismo

Pues ahora si, nada más, espero que os haya gustado y os sea tan útil como a mi!!

Microsoft Azure: Ins
Microsoft Intune: Ge
NO HAY COMENTARIOS

DEJA UN COMENTARIO

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This