Software zum Anwenden von Diff-Patches unter Windows

Ich muss die alte Version (N) des Produkts installieren. Der Hersteller hat jedoch den vollständigen Download zugunsten eines schrecklichen Launcher-basierten Installationsprogramms eingestellt, und für die Version, an der ich interessiert bin, wurde nur ein Patch von der vorherigen Version (N-1) veröffentlicht.

Ich habe es geschafft, Version N-1 zu erhalten und erfolgreich zu installieren, da es sich nur um eine Reihe von Zip-Paketen handelte. Patch für Version N enthält jedoch Diff-Patches (.rdiff- und .xdiff-Erweiterungen) für Datenpakete (zips), und obwohl ich versuchte, Launcher zu zwingen, sie zu installieren, schlug dies fehl und beschädigte Daten. (Ich habe nie mit solchen Patches gearbeitet)

Was ich über diese Diff-Patches weiß:

  • sie sind Diffs für Datenpakete (zips)
  • Ich weiß, welches Diff für welches Paket ist (nach Dateiname)
  • Diffs werden nicht verschleiert, der Archivmanager kann auf die darin enthaltenen Daten zugreifen (obwohl es ein "unerwartetes Ende des Archivs" gibt)

Obwohl ich keine Linux-Maschine bereit habe, kann ich bei Bedarf mit Software für Penguin arbeiten. Ich kann einen vom Pendrive booten (z. B. mit einem bootfähigen .iso-Loader), ich habe auch einen Pendrive, der groß genug ist, um alle Daten darauf zu speichern, sodass keine NTFS-Fähigkeit erforderlich ist.

(Ich habe es nicht eilig, also nehmen Sie sich bitte Zeit, um eine gute Antwort zu geben;) Ich werde in ca. 6 Stunden Zugriff auf die Maschine mit diesen Dateien haben und es ist sowieso nichts Kritisches)


Bearbeiten #1:

Obwohl ich gestern keinen Zugriff auf die fraglichen Dateien erhalten habe, habe ich einige Google + Brain-Arbeiten durchgeführt.

Anscheinend gibt es einfach keine Software, die das tut, was ich brauche, und der Patch selbst wird auf ketzerische Weise erstellt.

Dateien sehen aus, als wären sie mit dem Dienstprogramm rdiff-backup erstellt worden, das, sofern ich nicht blind bin, keine Option zum Anwenden von Reverse-Patches ohne Einrichtung des Repositorys hat.

Ich bin mir immer noch nicht sicher, ob der Patch auf gepackte Daten oder entpackte Verzeichnisse angewendet werden soll, aber es kann leicht getestet werden, wann ich diese Dateien endlich erreichen werde.

Und jetzt der ketzerische Teil, der Reverse-Diff-Patch wird erstellt, um eine neuere Version in eine ältere umzuwandeln ... und diese Firma hat ihn verwendet, um einen inkrementellen Patch anzuwenden? Pfui...

Es scheint, dass ich möglicherweise Dateiformatspezifikationen finden und einfach mein eigenes Dienstprogramm dafür erstellen muss.

Könnten Sie bitte einen Auszug aus einer .rdiff- und .xdiff-Datei posten? (wie die ersten 10 Zeilen) Befehlszeilenargumente, die während der diffOperation verwendet werden, wirken sich oft auf den patchBefehl aus, den Sie verwenden müssen.
Ich könnte, Daten sind überhaupt nicht geheim, aber wie ich geschrieben habe, wird es einige Zeit dauern, bis ich mit diesen Dateien zum Computer zurückkehren kann. (Ich kompiliere gerade )
Sobald ich das blaue Kompilieren gesehen habe, war mir klar, dass es dieses großartige xkcd sein würde :D
@NicolasRaoul Ich habe länger als erwartet gebraucht, um Zeit für diese Aufgabe zu finden, aber ich habe es geschafft, sie zu überwinden. Obwohl ich es geschafft habe, App Launcher zu zwingen, alte Updates korrekt zu installieren, habe ich auch genug Know-how gesammelt, um es manuell zu tun. Vielen Dank für den Hinweis mit dem Dateiheader. Ich habe die Dateikennung Soft verwendet, um mir mitzuteilen, welche Diff-Soft verwendet werden soll (ich hätte nie erwartet, dass es so viele Arten von Diffs gibt) - was mich dazu veranlasste, sie dem Launcher-Dienstprogramm zuzuführen.
Wenn Ihre Frage gelöst ist, könnten Sie bitte eine Antwort posten, in der Sie beschreiben, wie Sie sie gelöst haben? Vielen Dank!
Ich kann, nachdem ich das Kompilieren beendet habe ;) Ich habe meine Lesezeichendatenbank, die ich während meiner Recherchen erstellt habe, derzeit nicht bei mir. Die Antwort wird in Form einer Anleitung erfolgen, wie man das richtige Diff-Soft findet, da meine Lösung spezifisch für mein Problem ist.

Antworten (1)

Obwohl ich am Ende keine Diff-Patches manuell angewendet habe (ich habe es geschafft, Software zu zwingen, alte Updates anzuwenden), führte die Verfolgung dieses Ziels zu genügend Know-how, um dies zu tun (was mir zeigte, wie man besagten Software-Updater "behebt"). .

Der erste Schritt besteht darin, den Diff-Typ zu identifizieren. Text, binär, Verzeichnis, inkrementell, dekrementell (umgekehrt) ... und dann müssen Sie die genaue Implementierung herausfinden. Uff, der Schmerz!

Es gibt mehrere Hinweise darauf, mit welcher Art von Diff-Patch Sie es zu tun haben:

  1. Dateierweiterung
  2. Dateikopf
  3. Bibliotheken, die in gezielten Software-Updatern verwendet werden

In meiner Aufgabe habe ich mich mit folgenden Dateierweiterungen beschäftigt.

  • bdiff
  • xdiff
  • rdiff
  • wdsfc

Durch Überprüfung von Datei-Headern (Signaturen), die normalerweise aus zwei (word) oder vier (dword/int) Bytes bestehen. Obwohl die Suche nach Rohsignaturen fehlschlug, gelang es mir, diese nützliche File Identifier -Software zu finden, die mindestens eines der Diff-Formate in ihrer Datenbank hatte. (Ich werde Signaturen hinzufügen, auf die ich in einer späteren Bearbeitung gestoßen bin)

Die Ergebnisse waren wie folgt:

  • bdiff: Binary Diff, in meinem Fall war es das DeltaMAX -Format, obwohl Sie mit seiner kommerziellen Lösung Beispiel-Binärdateien (.NET hat die beste GUI) aus der herunterladbaren Demo verwenden können, um einzelne Patches anzuwenden. Kann auch durch die Verwendung der Datei DeltaMax.dll lokalisiert werden. Noob-freundlich unter Windows.
  • xdiff: Cross Diff (Name nicht sicher), es ist eine Hilfsklasse vom Xmail-Server , sollte sich in der libxdiff-Bibliothek befinden. Eine Beispielimplementierung existiert in PHP , aber derzeit (PHP 5.5.14) ist sie ohne Neukompilierung unbrauchbar. Praktisch unbrauchbar unter Windows.
  • rdiff: Reverse Diff, kommt mit librsync oder implementiert es als Software. Extrem schwer unter Windows zu verwenden.
  • wdsfc: In meinem Fall war es nur eine Datei, um die Originaldatei zu ersetzen, überhaupt kein Unterschied. (es sei denn, Sie nennen 100% ein Diff), ersetzen Sie die Originaldatei damit.

(Ja, diese Software ist so großartig, dass sie vier Arten von Patches zusammen mit normalen Updates verwendet ...)

Um es kurz zu machen, Windows ist eine sehr schlechte Plattform, um mit Diff-Patches zu arbeiten. Auf jeder Linux-Distribution finden Sie die meiste benötigte Software in Repositories (DeltaMAX ist nur Windows, sollte aber in Wine gut funktionieren) und selbst wenn nur der Quellcode verfügbar ist, ist es viel einfacher, es auf jedem Penguin zu kompilieren, als alle notwendigen Dinge zu installieren auf Windows-Rechner.