Software para aplicar parches diff en Windows

Necesito instalar la versión anterior (N) del producto. Sin embargo, su creador abandonó la descarga completa a favor de un horrible instalador basado en el iniciador, y para la versión que me interesa, solo se lanzó el parche de la versión anterior (N-1).

Logré obtener e instalar con éxito la versión N-1, ya que solo era un conjunto de paquetes zip. Sin embargo, el parche para la versión N contiene parches diferenciales (extensiones .rdiff y .xdiff) para paquetes de datos (zips), y aunque traté de forzar a Launcher para que los instalara, falló y dañó los datos. (Nunca trabajé con esos parches)

Lo que sé sobre esos parches diferenciales:

  • son diferencias para paquetes de datos (zips)
  • Sé qué diferencia es para qué paquete (por nombre de archivo)
  • las diferencias no están ofuscadas, el administrador de archivos puede acceder a los datos en ellos (aunque hay un "final inesperado del archivo")

Aunque no tengo una máquina Linux lista, puedo, si es necesario, trabajar con software para penguin. Puedo iniciar uno desde un pendrive (por ejemplo, mediante un cargador .iso de arranque), también tengo un pendrive lo suficientemente grande como para que quepan todos los datos, por lo que no se requiere capacidad NTFS.

(No tengo prisa, así que tómese su tiempo para dar una buena respuesta;) Tendré acceso a la máquina con esos archivos en ~ 6 horas y no es nada crítico de todos modos)


Editar #1:

Aunque ayer no pude acceder a los archivos en cuestión, hice un trabajo de google+brain.

Aparentemente, el software para hacer lo que necesito simplemente no existe, y el parche en sí está hecho de manera herética.

Los archivos parecen creados con la utilidad rdiff-backup que, a menos que sea ciego, carece de la opción de aplicar el parche inverso sin la configuración del repositorio.

Todavía no estoy seguro de si el parche se aplicará a los datos empaquetados o al directorio desempaquetado, pero se puede probar fácilmente cuando finalmente llegue a esos archivos.

Y ahora la parte herética, el parche de diferencia inversa está hecho para convertir una versión más nueva en una más antigua... ¿y esa compañía lo usó para aplicar un parche incremental? Puaj...

Parece que podría necesitar encontrar especificaciones de formato de archivo y simplemente crear mi propia utilidad para ello.

¿Podría publicar un extracto de los archivos .rdiff y .xdiff? (como las primeras 10 líneas) Los argumentos de la línea de comandos utilizados durante la diffoperación a menudo tienen un efecto en el patchcomando que debe usar.
Podría, los datos no son secretos en absoluto, pero como escribí, me llevará algún tiempo antes de que pueda volver a la computadora con esos archivos. (Actualmente estoy compilando )
Tan pronto como vi esa compilación azul, acabo de saber que sería genial xkcd: D
@NicolasRaoul me tomó más tiempo de lo esperado encontrar tiempo para esta tarea, pero logré superarlo. Aunque logré forzar el iniciador de aplicaciones para que instalara correctamente las actualizaciones antiguas, también reuní suficientes conocimientos para hacerlo manualmente. Gracias por la sugerencia con el encabezado del archivo, usé el identificador de archivo suave para decirme qué diff suave usar (nunca esperé que hubiera tantos tipos de diffs), lo que me guió sobre cómo enviarlos a la utilidad de inicio.
Si su pregunta está resuelta, ¿podría publicar una respuesta que describa cómo la resolvió? ¡Gracias!
Puedo, después terminaré de compilar ;) Actualmente no tengo mi base de datos de marcadores que creé a lo largo de mi investigación. La respuesta tomará la forma de una guía sobre cómo encontrar la diferencia correcta, ya que mi solución es específica para mi problema.

Respuestas (1)

Aunque al final no apliqué parches diff manualmente (logré forzar al software a aplicar actualizaciones antiguas), perseguir este objetivo resultó en suficiente conocimiento para hacerlo (lo que me mostró cómo "arreglar" dicho actualizador de software) .

El primer paso es identificar el tipo de diferencia. Texto, binario, directorio, incremental, decremental (inverso)... y luego necesita averiguar su implementación exacta. ¡Uf, el dolor!

Hay varios consejos sobre qué tipo de parche de diferencia está tratando:

  1. extensión de archivo
  2. encabezado del archivo
  3. bibliotecas utilizadas en el actualizador de software específico

En mi tarea me he ocupado de las siguientes extensiones de archivo.

  • b diferencia
  • xdif
  • riff
  • wdsfc

Comprobando los encabezados de los archivos (firmas), que normalmente constan de dos (palabra) o cuatro (dword/int) bytes. Aunque la búsqueda de firmas sin procesar resultó fallida, logré encontrar este útil software de identificación de archivos que tenía al menos uno de los formatos diff en su base de datos. (Agregaré las firmas que encontré en una edición posterior)

Los resultados fueron los siguientes:

  • bdiff: Binary Diff, en mi caso era el formato DeltaMAX , aunque su solución comercial puede usar binarios de ejemplo (.NET tiene la mejor GUI) de la demostración descargable para aplicar parches individuales. También se puede identificar mediante el uso del archivo DeltaMax.dll. Noob-amigable en Windows.
  • xdiff: Cross Diff (no estoy seguro del nombre), es una clase auxiliar del servidor de Xmail , debe residir en la biblioteca libxdiff. Existe una implementación de ejemplo en PHP , pero por ahora (PHP 5.5.14) no se puede usar sin recompilar. Prácticamente inutilizable en Windows.
  • rdiff: Reverse Diff, viene con librsync o implementando su software. Extremadamente difícil de usar en Windows.
  • wdsfc: en mi caso, era solo un archivo para reemplazar el original, no una diferencia en absoluto. (a menos que llame al 100% una diferencia), reemplace el archivo original con él.

(Sí, este software es tan increíble que usa cuatro tipos de parches junto con las actualizaciones normales...)

Para resumir, Windows es una plataforma muy mala para trabajar con parches diferenciales. En cualquier distribución de Linux, puede encontrar la mayoría del software necesario en los repositorios (DeltaMAX es solo para Windows, pero debería funcionar bien en Wine) e incluso si solo la fuente estará disponible, es mucho más fácil compilarla en cualquier Penguin que instalar todo lo necesario. en la máquina de Windows.