O sistema atualizar tudo automático não é muito complicado, mas precisa tomar cuidado imaginando tudo que poderia acontecer.
1. Obrigar todos a saírem do aplicativo
2. Fazer um backup de tudo, antes de mexer
3. Alterar estrutura e demais coisas.
Um jeito simples: criando a estrutura nova.
dbCreate( "novodbf.dbf", aEstrutura )
USE novodbf
APPEND FROM dbfvelho
COPY TO dbfvelho
fErase( "novodbf.dbf" )
Mas tem que lembrar que se tiver campo memo tem o DBT ou FPT.
Talvez testar espaço em disco, nunca se sabe.
E é muito bom criar número de versão, porque se o cara lá usar uma versão velha, vai estragar toda estrutura.
O backup vai salvar problemas.
O backup... é bom não manter só o último, porque o cara lá pode tentar várias vezes fazer a besteira.
Aqui gravo com data/hora. EMPRESA-20160211-1656.zip
Se o cara fizer a besteira várias vezes, tem vários backups.
Nessa rotina de backup vou apagando os antigos, pra não encher o HD de backups.
Uso o critério de deixar sempre o primeiro de cada mês, além de todos os últimos.
É só ir criando as rotinas, preparando o sistema pra isso, e ir colocando uma coisa de cada vez.
No final é uma ajuda grande tudo isso, de backup, e outras coisas mais.
Minha rotina de backup expulsa todos do aplicativo pra fazer backup.
E não deixa ninguém entrar enquanto o backup estiver sendo feito.
O aplicativo também obriga a sair quando instala versão nova.
No final, uma coisa complementa a outra.
Não precisa fazer tudo de uma vez, vai preparando o aplicativo pra essas operações, uma de cada vez.
Mesmo que demore um mês ou mais pra ficar pronto, algum dia vai ficar pronto, e passa a tirar proveito.
Vai eliminando trabalho que hoje faz manualmente.
Por exemplo:
Se fizer o sistema expulsar quem está usando, já vai te tirar um trabalho manual.
Se fizer o backup pelo sistema, outro trabalho manual eliminado.
Se atualizar o sistema pela internet, outro trabalho manual eliminado.
e por aí vai, até terminar.