⚠ Aviso: O instalador do Agente do Windows com .msi extensão deve ser usado apenas para implantações de Política de Domínio (GPO). O instalador não deve ser renomeado, pois pode impedir a atualização para versões futuras; nesse caso, os agentes precisariam ser reinstalados.
⚐ Nota: Esse procedimento se aplica a versões superiores à 9.20.
O que fazer se o instalador já foi renomeado e os agentes foram instalados nesse estado? O procedimento a seguir corrige o registro do Windows Installer para que o agente possa ser atualizado para versões futuras sem precisar reinstalá-lo.
O que é?
Fix-ArandaAgentSourceList.bat é um script que localiza, dentro de HKEY_CLASSES_ROOT\Installer\Products, a chave do produto Aranda Agente 9 e atualiza o valor PackageName do seu subkey SourceList com o nome original do instalador (Aranda Agent 9.msi). Antes de modificar o registro, exporte um backup .reg da chave completa em %TEMP%\RegistryBackups.
Para quê?
O Instalador do Windows utiliza o PackageName de SourceList localizar o pacote MSI original ao aplicar uma atualização ou patch ao agente. Se o agente foi instalado com um instalador renomeado, esse valor não corresponde ao nome esperado, e as atualizações subsequentes falham. O script corrige o valor sem desinstalar ou reinstalar o agente.
Como funciona?
1. Faça upload do script como um pacote de software:
a. Copie o conteúdo completo do roteiro mostrado abaixo.
b. Cole em um editor de texto, como o Bloco de Notas do Windows.
c. Salvar o arquivo com extensão .bat (por exemplo, Fix-ArandaAgentSourceList.bat). Ao salvar, selecione a Todos os Arquivos no campo “Type”, caso contrário o editor adiciona a extensão .txt por padrão.
d. Enviar o arquivo .bat Como um pacote de software. Ver Pacotes
@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. Crie o projeto de distribuição do pacote. Veja Distribuição de Software
3. Associe apenas os dispositivos nos quais o agente foi instalado ao instalador renomeado.
4. Execute o projeto de distribuição e verifique se ele foi concluído com sucesso.
5. Forçar o agente a atualizar a partir do console usando a ação apropriada, ou aguardar a tarefa de atualização automática rodar.
6. Confirme se o agente foi atualizado com sucesso. Se o problema persistir, desinstale o agente e reinstale-o usando o instalador com .exe extensão.