patch - solucionar - que es un parche informatico
¿Cómo los pequeños parches de software corrigen el gran software? (2)
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.
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.
Esto generalmente se implementa utilizando algoritmos de diferencias binarias - difiere la versión más reciente 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 de diferencias binarias genéricas: 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.
Si está hablando de parchear aplicaciones de Windows, entonces lo que quiere ver son archivos .MSP. Estos son similares a un .MSI pero solo parche y aplicación.
Eche un vistazo a Parches y actualizaciones en los documentos de MSDN.
Lo que hace un archivo .MSP es cargar archivos actualizados a 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 aplicar parches a 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 debe usarse en otros sistemas operativos. Aunque podría hacer que funcione en Windows, sería algo extraño.