Pergunta

Existe um quadro que pode ser usado para permitir que um # Windows Service C para verificar automaticamente para uma versão mais recente e atualizar-se? Posso código certamente escrita para fazer isso, mas eu estou procurando uma estrutura que já foi implementado e (mais importante) testada.

[editar] Aqui está um link para uma pergunta semelhante com links para projetos modernos que ajuda fazer isso: biblioteca Auto-update for .NET?

Foi útil?

Solução

A única maneira de tipos de descarregamento é destruir o appdomain. Para fazer isso exigiria a separação de sua camada de hospedagem do seu código de serviços que executa - isso é muito complexa. (Tipo de como fazer a cirurgia laparoscópica)

Pode ser mais fácil para qualquer um) executar uma tarefa de lote ou b) em serviço detectar actualizações em seguida, lançar um processo separado que interrompe o serviço, atualizações assembléias etc. em seguida, reinicia-lo.

Se você estiver interessado na antiga, o MSDN padrões e práticas popular escreveu um aplicativo atualizador bloco que você se adaptar ao seu serviço.

https : //web.archive.org/web/20080506103749/http: //msdn.microsoft.com/en-us/library/ms978574.aspx

Outras dicas

Eu não estou ciente de quaisquer estruturas que facilitem soluções para esse problema específico.

O que você poderia tentar embora é separar a lógica de negócios do serviço a partir do código de serviço real em diferentes montagens. Ter o serviço de montagem verificar se há atualizações para a lógica de negócios de montagem em intervalos regulares, copiá-lo a partir de uma fonte remota, se necessário, descarregar o velho BL montagem (e talvez excluir), e depois carregar dinamicamente a nova versão (descarregando o velho montagem não é uma tarefa trivial).

Outra solução possível é ter um serviço separado que corre, pára o outro, se houver uma atualização, e atualiza o serviço. Você não pode ter uma atualização de serviço em si, porque o arquivo .dll que está executando não vai parar.

Separando a camada de lógica de negócio seria uma boa opção. Você também pode reescrever o principal serviço para executar sob reflexão por um serviço de mestre ou controle. Isto é semelhante ao que separa a lógica de negócios, e isso só seria necessário parar um fio e a iniciá-lo novamente.

Não conheço nenhum quadro conhecido que faz isso. Eu tenho feito isso mesmo, mas isso não é uma estrutura pública.

Eu tenho usado WyBuild para atualizar minhas aplicações (incluindo os serviços do Windows) e é bastante impressionante. Realmente fácil de usar, e muito simples de se integrar com as aplicações existentes. É uma muito grande estrutura automática Atualizando ...

http://wyday.com/wybuild/ ajuda / automáticas atualizações / windows-services-consola-apps.php http://wyday.com/wybuild/help/silent-update-windows -service.php

Note que é um quadro pago (a licença é por desenvolvedor, uma experimentação livre está incluído)

No caso de alguém mais está procurando por este; Eu encontrei este link interessante. Eu não implementaram esta solução, mas parece que ele pode trabalhar para me

http://www.eggheadcafe.com/articles/20041204.asp

Você pode esclarecer sua pergunta um pouco? Estou um pouco confuso, porque até onde eu sei, você sempre pode substituir as DLLs os usos de serviços. A cópia e reinício do serviço pode ser feita facilmente parte de você processo de construir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top