Dica de design: atualizando arquivos nas máquinas clientes

Visual Basic, VB .NET, ASP, Active X, Access, SQL Server

Dica de design: atualizando arquivos nas máquinas clientes

Um trabalho que incomoda ao desenvolvedor que cria aplicações tanto em duas como em três camadas é o de atualizar arquivos ou informações no registro das máquinas clientes toda vez que a aplicação sofre alguma modificação que exige estas tarefas. Ter que ir de máquina em máquina é uma tarefa trabalhosa e lenta. Que tal programar as aplicações clientes para fazerem elas mesmo estas atualizações logo ao se iniciarem?

Uma sugestão é definir um diretório compartilhado na máquina servidora onde você pode colocar um arquivo de script feito no formato que você escolher e os arquivos que a aplicação cliente deve copiar sempre que  tiver que se atualizar. Muitas vêzes os arquivos a serem atualizados podem estar em uso e não poderem ser substituídos ao serem copiados para a máquina cliente. A saída é usar a API MoveFileEx com o flag MOVEFILE_DELAY_UNTIL_REBOOT *, que permite gravar informações no registro para que o Windows substitua os arquivos na sua próxima inicialização. A aplicação dá, então, uma mensagem para o usuário de que o Windows precisa ser reiniciado para completar as atualizações e pergunta se ele quer reiniciar já. Se o usuário concordar, sai reiniciando o Windows, se o usuário não concordar, sai e marca no registro que precisa de uma reinicialização do Windows. Se o usuário entrar novamente na aplicação, recebe uma mensagem de que a aplicação precisa da reinicialização do Windows para continuar. Quando a atualização exigir o registro de componentes, a aplicação cliente deve chamar o regsvr32.exe para registrar cada arquivo tão logo se inicie novamente após a reinicialização do Windows.

* No Windows 95 você não usa MoveFileEx, mas tem que criar uma seção [Rename] no arquivo WinInit.ini informando a fonte e destino do arquivo a ser movido. Se o arquivo WinInit.ini não exitir, você deve criá-lo no diretório Windows do seu sistema.