Essa questao de Atulização é complicada...
Em meus sistemas eu procuro deixar sempre o maximo de processamento no banco de dados (SPs, Triggers e Functions) e assim qdo precisar mudar alguma coisa no sistema que envolva criar ou deletar campos, eu posso simplesmente rodar um script no SQL Server do cliente... quando precisar mudar a interface (botoes, logos, grids, etc) eu nem preciso alterar o banco, basta trocar os executaveis do cliente...
Mas ainda assim é uma tarefa dificil... eu tenho poucos clientes, e geralmente um sistema serve apenas a um ou alguns clientes, entao qdo precisa atualizar eu conecto via oSQL ou Terminal Services, e faço tudo manualmente...
Ate tenho um esquema de Update que atualiza os executaveis na maquina cliente quando eu instalo uma versao nova no servidor...
mas isso de conectar FTP, rodar Scripts automaticamente, coisas do tipo... ai exige uma analise mais profunda...
Não sei se vou poder te ajudar muito... se voce tiver uma boa analise e precisar de ajuda pra implementar, pode me procurar aki ou no msn...
mesmo assim te desejo sorte... muitos programadores ja iniciaram esse tipo de projeto e pararam no meio...