Ren@to, estou no serviço agora, mas ao chegar em casa, se vc quiser, tenho um projetinho chamado "Launcher".
Basicamente, o shortcut na máquina do usuário direcionado ao seu programa, vc passa o caminho do Launcher mais o programa que ele deve iniciar de verdade (via parâmetro). O executável que aparece no parâmetro é local.
Feito isso, quando o usuário clica no ícone para abrir sua aplicação, o Launcher inicia, abre um arquivinho INI que está no mesmo diretório em algum servidor onde está seu Exe, e com ele o Launcher checa tudo que pode precisar atualizar (exe, ocx, dll, etc). Feito a checagem via API para saber com que versões (local e remoto) de arquivos ele está lidando (e atualizado o que tiver que ser atualizado), ele lança o exe verdadeiro e termina.
O interessante é que vc pode trocar o executável sem precisar pedir para todo mundo sair, porque os executáveis, ocx's e dll estão todos lá no servidor, na área que o Launcher de cada máquina acessa, mas ele traz tudo prá máquina, então o usuário acaba iniciando uma cópia local para trabalhar, sem que ele perceba.
Ele é bem legal e flexível, que me lembre implantei ele no pessoal de Sistemas Financeiros do Itaú e no ABN.