2008-09-28 11 views
9

Una cosa que siempre me he preguntado es cómo funcionan los parches de software. Una gran cantidad de software parece simplemente lanzar nuevas versiones en sus binarios que necesitan ser instaladas 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 funcionalidades a los existentes. software.¿Cómo los pequeños parches de software corrigen el gran software?

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

¿Cómo se implementan realmente 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 tenga que hacer una implementación de esta manera, pero tengo curiosidad por saber cómo funciona. Si entiendo correctamente que los parches realmente pueden modificar solo partes de archivos binarios, ¿es posible hacerlo en .NET? Si es así, me gustaría aprenderlo ya que ese es el marco con el que estoy más familiarizado y me gustaría entender cómo funciona.

Respuesta

14

Esto generalmente se implementa utilizando algoritmos de diferencias binarias: diferencia la última versión lanzada contra el nuevo código. Si el usuario ejecuta la versión más reciente, solo necesita aplicar la diferencia. Funciona especialmente bien con el software, ya que 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 diff binarios genéricos: 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 apetece un proyecto.

+0

Reemplazaría "puede ser" por "is" o al menos usualmente lo es. –

2

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

Eche un vistazo a Patching and Upgrading en los documentos de MSDN.

Lo que hace un archivo .MSP es cargar archivos actualizados en una instalación de aplicación. Por lo general, esto actualiza los archivos dll y de recursos, pero podría incluir cualquier archivo.

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

Estoy pensando que el método de diferencias binarias discutido por John Millikin se debe utilizar en otros sistemas operativos. Aunque podría hacer que funcione en Windows, sería algo extraño.

Cuestiones relacionadas