PT
Español
English
Português
    Repair Agent SourceList instalado com o instalador renomeado

    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.