Duvida sobre compilação

A forma como eu uso (e prefiro) é ter um AppServer e ambiente específico para desenvolvimento e compilação. No momento de uma atualização de rpo em produção, eu copio o rpo de produção para o ambiente de desenvolvimento, compilo/aplico todas as atualizações, depois paro o serviço de produção e troco o rpo de produção com o de desenvolvimento.

Nem toda empresa pode se dar ao luxo de parar o sistema em período produtivo, então alguns desenvolvedores que conheço preferem realizar uma atualização a quente, que seria trocar o rpo de produção por outro diretamente no appserver.ini de produção e sem parar o sistema.

Para isso, basta preparar outro rpo baseado no de produção e disponibilizar em outra pasta, após isso, alterar as chaves SourcePath e RpoCustom do ini. Exemplo:

Estava assim:


SourcePath=C:\Totvs\Protheus\apo
RpoCustom=C:\Totvs\Protheus\apo\custom.rpo

Altero apontando para o novo rpo:


SourcePath=C:\Totvs\Protheus\apo\quente
RpoCustom=C:\Totvs\Protheus\apo\quente\custom.rpo

Ao fazer essa troca, o sistema irá identificar a mudança do repositório e irá reiniciar o smartclient dos usuários.


Caso você estiver tendo problemas de acesso exclusivo em ambientes de teste ou desenvolvimento, você pode configurar a chave BuildKillUsers no ambiente em questão.

Uma vez ativada, essa chave sempre irá derrubar TODAS as conexões quando for dado o comando de compilação, permitindo que seja compilado fontes sem exibir a mensagem de acesso exclusivo.

Muito cuidado ao configurar essa chave em ambientes de produção, uma vez que poderia ocasionar a derrubada de todos os usuários.

Para maiores informações: https://centraldeatendimento.totvs.com/hc/pt-br/articles/360018481631-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Encerrar-todas-as-conex%C3%B5es-quando-solicitado-uma-compila%C3%A7%C3%A3o