En primer lugar, para que la instalación y actualización del agente funcione cuando se configura una contraseña de desinstalación, no debe utilizar el paquete msi (instalación correcta, actualización KO, se solicita la contraseña de protección del agente, etc.).
Se debe crear un paquete ejecutable de instalación desde el servidor que funcionará para la instalación y las actualizaciones sin requerir una contraseña:
El código del paquete wapt adaptado:
Código: Seleccionar todo
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = ['{1841AFE1-4BA7-44D4-8700-6ACF860A8ED1}']
def install():
# Initializing variables
package_version = control.get_software_version()
# Vérification de la version pour gestion d'erreur
for to_install in installed_softwares('Trend Micro Apex One Security Agent'):
if Version(to_install["version"]) < Version(package_version) or force:
print ('installing %s' % control.package)
install_exe_if_needed('TrendMicroSecurityAgent.exe')
else:
print ('%s already installed' % control.package)
uninstallkey.remove('{1841AFE1-4BA7-44D4-8700-6ACF860A8ED1}')
Para la desinstalación, sugiero dos soluciones que he probado:
Solución 1:
Al deshabilitar la contraseña de desinstalación desde la consola del servidor, la clave de registro "Permitir desinstalación" se establecerá en 1 en los agentes. La desinstalación se puede realizar con el siguiente código:
Código: Seleccionar todo
def uninstall():
print ('uninstalling %s' % control.package)
run(r'"msiexec.exe" /x {1841AFE1-4BA7-44D4-8700-6ACF860A8ED1} /qn')
Solución 2:
La desinstalación es posible con el siguiente código sin deshabilitar la contraseña en la consola de administración (la contraseña estará en texto sin formato en el paquete):
Código: Seleccionar todo
def uninstall():
print ('uninstalling %s' % control.package)
run(r'"%s\Trend Micro\Security Agent\pccntmon.exe" -m <uninstall_password>' % programfiles32)
fuente
Algunas pistas que no resultaron:
La creación del paquete ejecutable desde el cliente del empaquetador se basa en el archivo de configuración ofcscan.ini en el servidor; editar este archivo le permite encontrar las opciones de autoprotección del agente:
[SECCIÓN_CLIENTE_INI]
SP_EnableFileProtection = 1
SP_EnableRegistryKeyProtection = 1
SP_EnableProcessProtection = 1
Desafortunadamente, establecerlos en 0 no parece funcionar...
Sin embargo, en el registro del siguiente agente sí se encuentran las claves para las opciones de autoprotección:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TrendMicro\PC-cillinNTCorp\CurrentVersion\AEGIS
Al establecer la clave "SP_EnableRegistryKeyProtection" a 0, se desactiva la protección del registro, por lo que la clave "Permitir desinstalación" se puede modificar desde un paquete WAPT sin desactivar la contraseña del agente. El problema es que no es posible modificar la clave "SP_EnableRegistryKeyProtection" mientras el agente está en ejecución. Primero hay que cerrar el agente, que solicita la contraseña. En resumen, no veo cómo automatizar completamente la desinstalación dentro de un paquete WAPT.