⚠ Advertencia: El instalador de agente Windows con extensión .msi debe utilizarse únicamente para despliegues por Política de Dominio (GPO). No se debe cambiar el nombre del instalador, ya que podría impedir la actualización a futuras versiones; en ese caso, sería necesario reinstalar los agentes.
⚐ Nota: Este procedimiento aplica para versiones superiores a 9.20.
¿Qué hacer si el instalador ya se renombró y los agentes quedaron instalados en ese estado? El siguiente procedimiento corrige el registro de Windows Installer para que el agente pueda actualizarse a futuras versiones sin necesidad de reinstalarlo.
¿Qué es?
Fix-ArandaAgentSourceList.bat es un script que localiza, dentro de HKEY_CLASSES_ROOT\Installer\Products, la clave del producto Aranda Agent 9 y actualiza el valor PackageName de su subclave SourceList con el nombre original del instalador (Aranda Agent 9.msi). Antes de modificar el registro, exporta un respaldo .reg de la clave completa en %TEMP%\RegistryBackups.
¿Para qué?
Windows Installer usa el valor PackageName de SourceList para localizar el paquete MSI original al aplicar una actualización o parche del agente. Si el agente se instaló con un instalador renombrado, ese valor no coincide con el nombre esperado y las actualizaciones posteriores fallan. El script corrige el valor sin desinstalar ni reinstalar el agente.
¿Cómo funciona?
1. Cargue el script como paquete de software:
a. Copie el contenido completo del script que se muestra a continuación.
b. Péguelo en un editor de texto, por ejemplo el Bloc de notas de Windows.
c. Guarde el archivo con extensión .bat (por ejemplo, Fix-ArandaAgentSourceList.bat). Al guardar, seleccione la opción Todos los archivos en el campo “Tipo”, ya que de lo contrario el editor agrega la extensión .txt por defecto.
d. Cargue el archivo .bat resultante como paquete de software. Ver paquetes
@echo off
setlocal enabledelayedexpansion
rem ============================================================
rem Busca en HKEY_CLASSES_ROOT\Installer\Products la clave cuyo
rem valor ProductName sea "Aranda Agent 9". Antes de modificarla,
rem exporta un respaldo .reg de la clave completa a una carpeta
rem temporal. Luego actualiza PackageName dentro de SourceList.
rem
rem Debe ejecutarse como Administrador.
rem ============================================================
set "PRODUCTNAME=Aranda Agent 9"
set "NEWPACKAGENAME=Aranda Agent 9.msi"
set "ROOTKEY=HKEY_CLASSES_ROOT\Installer\Products"
rem --- Verificar permisos de administrador ---
net session >nul 2>&1
if not %errorlevel% == 0 (
echo Este script requiere permisos de Administrador.
echo Haz clic derecho sobre el archivo y selecciona "Ejecutar como administrador".
exit /b 1
)
echo Buscando clave con ProductName = "%PRODUCTNAME%" ...
set "FOUNDKEY="
for /f "tokens=*" %%K in ('reg query "%ROOTKEY%" 2^>nul') do (
set "SUBKEY=%%K"
if not "!SUBKEY!"=="%ROOTKEY%" if not "!SUBKEY!"=="" (
for /f "tokens=2,*" %%A in ('reg query "!SUBKEY!" /v ProductName 2^>nul ^| findstr /i "ProductName"') do (
set "PNAME=%%B"
if /i "!PNAME!"=="%PRODUCTNAME%" (
set "FOUNDKEY=!SUBKEY!"
)
)
)
)
if "%FOUNDKEY%"=="" (
echo No se encontro ninguna clave con ProductName = "%PRODUCTNAME%"
exit /b 1
)
echo Clave encontrada: %FOUNDKEY%
set "SOURCELISTKEY=%FOUNDKEY%\SourceList"
reg query "%SOURCELISTKEY%" >nul 2>&1
if not %errorlevel% == 0 (
echo La subclave SourceList no existe en %FOUNDKEY%
exit /b 1
)
rem --- Respaldo de la clave completa antes de modificarla ---
set "BACKUPDIR=%TEMP%\RegistryBackups"
if not exist "%BACKUPDIR%" mkdir "%BACKUPDIR%"
set "STAMP=%date%_%time%"
set "STAMP=%STAMP::=-%"
set "STAMP=%STAMP:/=-%"
set "STAMP=%STAMP:,=-%"
set "STAMP=%STAMP: =_%"
set "STAMP=%STAMP:.=-%"
for %%N in ("%FOUNDKEY%") do set "KEYNAME=%%~nN"
set "BACKUPFILE=%BACKUPDIR%\Installer_Products_%KEYNAME%_%STAMP%.reg"
reg export "%FOUNDKEY%" "%BACKUPFILE%" /y
if not %errorlevel% == 0 (
echo No se pudo crear el respaldo de la clave. Se aborta antes de modificar el registro.
exit /b 1
)
if not exist "%BACKUPFILE%" (
echo El archivo de respaldo no se genero. Se aborta antes de modificar el registro.
exit /b 1
)
echo Respaldo creado en: %BACKUPFILE%
rem --- Modificar PackageName en SourceList ---
for /f "tokens=2,*" %%A in ('reg query "%SOURCELISTKEY%" /v PackageName 2^>nul ^| findstr /i "PackageName"') do (
echo Valor actual de PackageName: %%B
)
reg add "%SOURCELISTKEY%" /v PackageName /t REG_SZ /d "%NEWPACKAGENAME%" /f
if not %errorlevel% == 0 (
echo No se pudo actualizar PackageName.
exit /b 1
)
for /f "tokens=2,*" %%A in ('reg query "%SOURCELISTKEY%" /v PackageName 2^>nul ^| findstr /i "PackageName"') do (
echo Nuevo valor de PackageName: %%B
)
echo Actualizacion completada correctamente.
endlocal
2. Cree el proyecto de distribución para el paquete. Ver Distribución de software
3. Asocie únicamente los dispositivos en los que el agente se instaló con el instalador renombrado.
4. Ejecute el proyecto de distribución y verifique que finalice correctamente.
5. Fuerce la actualización del agente desde la consola mediante la acción correspondiente, o espere a que se ejecute la tarea automática de actualización.
6. Confirme que el agente se actualice correctamente. Si el problema persiste, desinstale el agente y vuelva a instalarlo utilizando el instalador con extensión .exe.