Boa noite Daniel;
Eu utilizo a seguinte tecnica :
Tenho uma tabela no banco de PARAMETROS, generica, onde um dos registros é VERSAO_"MODULO", meu sistema tem varios modulos, e cada um pode ter a sua versão;
Tenho uma tabela no banco chamada de ARQUIVOS, sim um dos campos é um BLOB subtype 0;
Tenho um servidor FTP na minha empresa;
Desenvolvi um aplicativo chamado ATUALIZAWEB.exe; quando executo o mesmo, ele se conecta no meu FTP com um usuario especifico, e baixa em uma estação qualquer os executaveis mais novos, pega os executaveis e grava cada na tabela ARQUIVOS, e atualiza o devido parametro de cada versão de cada modulo;
Para salvar no banco de dados, simplesmente tenho um IBDATASET apontando para a tabela ARQUIVOS, localizo o registro correspondente do modulo, se nao existe crio o registro, se exisitir, edito, e faço um IBDATASET.LOADFROMFILE("arquivo.exe")
Cada modulo quando vai rodar, na inicialização verifico a versao do executavel junto a tabela de parametros, se for diferente, saio do sistema, mas antes mando rodar um outro aplicativo chamado ATUALIZALOCAL.EXE, este aplicativo se conecta ao banco, varre a tela de ARQUIVOS, e a cada registro ele faz o inverso, IBDATASET.SAVETOFILE("arquivo.exe"), o nome do arquivo esta em outro campo.
De maneiras globais, é mais ou menos isso, caso tenha duvidas mais especificas, pode entrar em contato.