Pregunta

Una cosa que siempre me he preguntado es cómo funcionan los parches de software. Parece que una gran cantidad de software acaba de lanzar nuevas versiones en sus binarios que deben instalarse sobre versiones anteriores, pero algunos programas (sistemas operativos como Windows en particular) parecen ser capaces de lanzar parches muy pequeños que corrigen errores o agregan funcionalidad a los existentes. software.

La mayoría de las veces, los parches que veo no pueden reemplazar aplicaciones completas o incluso archivos pequeños que se usan dentro de las aplicaciones. A mí me parece que el binario real está siendo modificado.

¿Cómo se implementan estos tipos de parches? ¿Alguien podría indicarme algún recurso que explique cómo funciona esto, o es tan simple como reemplazar componentes pequeños como bibliotecas vinculadas en una aplicación?

Probablemente nunca necesitaré realizar una implementación de esta manera, pero tengo curiosidad por saber cómo funciona. Si entiendo correctamente que los parches pueden modificar realmente solo porciones de archivos binarios, ¿es posible hacerlo en .NET? Si es así, me gustaría aprenderlo ya que es el marco con el que estoy más familiarizado y me gustaría entender cómo funciona.

¿Fue útil?

Solución

Esto generalmente se implementa utilizando algoritmos binarios de diferencias: difiere la versión más reciente lanzada contra el nuevo código. Si el usuario está ejecutando la versión más reciente, solo necesita aplicar el diff. Funciona particularmente bien contra el software, porque el código compilado suele ser bastante similar entre las versiones. Por supuesto, si el usuario no está ejecutando la versión más reciente, tendrá que descargar todo de todos modos.


Hay un par de implementaciones de algoritmos genéricos de diferencias binarias: bsdiff y xdelta son buenas implementaciones de código abierto. No puedo encontrar ninguna implementación para .NET, pero dado que los algoritmos en cuestión son bastante independientes de la plataforma, no debería ser demasiado difícil portarlos si te sientes como un proyecto.

Otros consejos

Si está hablando de parchear aplicaciones de Windows, entonces lo que quiere ver son archivos .MSP. Estos son similares a un .MSI pero solo un parche y una aplicación.

Eche un vistazo a Aplicación de parches y mejoras en los documentos de MSDN.

Lo que hace un archivo .MSP es cargar archivos actualizados a una instalación de aplicación. Esto generalmente se actualiza en archivos dll y recursos, pero podría incluir cualquier archivo.

Además de parchear la aplicación instalada, los archivos de reparación ubicados en C: \ WINDOWS \ Installer también se actualizan. Luego, si el usuario selecciona " Reparar " de Agregar o quitar programas también se usan los archivos de parches actualizados.

Estoy pensando que el método de diferencia binaria discutido por John Millikin debe usarse en otros sistemas operativos. Aunque podrías hacerlo funcionar en Windows, sería un poco extraño.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top