Pergunta

Uma coisa que eu sempre quis saber sobre como é software corrige trabalho. Um monte de software parece apenas lançar novas versões de seus binários que precisam ser instalados sobre as versões mais antigas, mas alguns software (sistemas operacionais como Windows, em particular) parecem ser capazes de liberar muito pequenas manchas que corrigir bugs ou adicionar funcionalidades ao já existente software.

Na maioria das vezes os patches vejo não pode substituir aplicações inteiras, ou mesmo pequenos arquivos que são usados ??nos aplicativos. Para mim parece que o binário real está sendo modificado.

Como são esses tipos de manchas realmente implementadas? Poderia alguém me aponte para quaisquer recursos que explicar como isso funciona, ou é apenas tão simples como substituir componentes pequenos tais como bibliotecas vinculadas em um aplicativo?

Eu provavelmente nunca precisa fazer uma implantação dessa maneira, mas estou curioso para saber como ele funciona. Se eu estou correto em meu entendimento de que manchas podem realmente modificar apenas partes de arquivos binários, este é possível fazer em .NET? Se é que eu gostaria de aprender uma vez que é o quadro que estou mais familiarizado com e eu gostaria de entender como ele funciona.

Foi útil?

Solução

Este é normalmente implementado usando algoritmos de diff binário - diff a versão mais recentemente lançado contra o novo código. Se o usuário de executar a versão mais recente, você só precisa aplicar o diff. Funciona particularmente bem contra o software, porque o código compilado é geralmente bastante semelhante entre as versões. Claro que, se o usuário não está executando a versão mais recente que você vai ter que baixar a coisa toda de qualquer maneira.


Existem algumas implementações de genéricos algoritmos de diff binários: bsdiff e xdelta são boas implementações de código aberto. Não consigo encontrar qualquer implementações para .NET, mas desde que os algoritmos em questão são bastante independente de plataforma não deve ser muito difícil para a porta deles, se você se sentir como um projeto.

Outras dicas

Se você está falando de remendar os aplicativos do Windows, em seguida, o que você quer olhar são .MSP arquivos. Estes são semelhantes a um remendo MSI, mas apenas e aplicação.

Dê uma olhada patch e atualização nos documentos MSDN.

O que arquiva um .MSP faz é carregar arquivos atualizados para uma aplicação instalar. Este dll normalmente é atualizado de e arquivos de recursos, mas poderia incluir qualquer arquivo.

Além de remendar o aplicativo instalado, os arquivos de reparação situados em C: \ WINDOWS \ Installer são atualizados também. Então, se o usuário selecionar "Reparar" Adicionar / Remover Programas os arquivos de patch atualizados são usados ??também.

Estou pensando que o método diff binário discutido por John Millikin deve ser usado em outros sistemas operacionais. Embora você poderia fazê-lo funcionar no Windows seria um pouco estranho.

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