Frage

Eine Sache, die ich immer über gefragt habe, ist, wie Software-Patches funktionieren. Viele Software scheint nur neue Versionen auf ihre Binärdateien freigeben, die über ältere Versionen installiert werden müssen, aber einige Software scheinen in der Lage zu lösen sehr kleine Flecken, die Fehler zu korrigieren oder erweitern die Funktionalität bestehender (Systeme wie Windows insbesondere in Betrieb) Software.

Die meiste Zeit die Patches ich kann nicht sehen, möglicherweise ganze Anwendungen ersetzen oder sogar kleine Dateien, die innerhalb von Anwendungen verwendet werden. Mir scheint es, wie die tatsächliche binäre geändert wird.

Wie werden diese Arten von Patches tatsächlich umgesetzt? Könnte mich jemand auf alle Ressourcen darauf, die erklären, wie das funktioniert, oder ist es nur so einfach wie bei einer Anwendung kleine Komponenten wie verknüpfte Bibliotheken zu ersetzen?

Ich werde wahrscheinlich nie ein Einsatz auf diese Weise tun müssen, aber ich bin neugierig, um herauszufinden, wie es funktioniert. Wenn ich in meinem Verständnis richtig bin, dass Patches wirklich nur Teile von binären Dateien ändern kann, ist dies möglich, in .NET zu tun? Wenn es ich möchte es lernen, da, dass der Rahmen für die ich mich am besten kennen und ich möchte wissen, wie es funktioniert.

War es hilfreich?

Lösung

Dies wird in der Regel umgesetzt binäre diff Algorithmen - diff der zuletzt veröffentlichten Version gegen den neuen Code. Wenn der Benutzer die neueste Version ausgeführt wird, müssen Sie nur die diff anzuwenden. Funktioniert besonders gut gegen Software, weil kompilierten Code in der Regel ziemlich ähnlich zwischen den Versionen ist. Natürlich, wenn der Benutzer nicht ist die neueste Version laufen müssen Sie sowieso die ganze Sache herunterladen.


Es gibt ein paar Implementierungen von allgemeinen binären diff Algorithmen: bsdiff und xdelta sind gute Open-Source-Implementierungen. Ich kann keine Implementierungen für .NET finden, aber da die Algorithmen in Frage sind ziemlich plattformunabhängige es nicht zu schwierig, sie zu portieren sein sollte, wenn man sich wie ein Projekt fühlen.

Andere Tipps

Wenn Sie sprechen über das Patchen von Windows-Anwendungen dann, was Sie bei MSP-Dateien sind zu suchen. Diese sind ähnlich wie eine .msi aber nur Patch und Anwendung.

Hier finden Sie aktuelle Patching und Aktualisieren in den MSDN-Dokumenten.

Was eine MSP-Dateien tun, ist Last aktualisierten Dateien in eine Anwendung installieren. Diese Regel wird aktualisiert DLL und Ressourcendateien, könnte aber jede Datei enthalten.

Neben der installierten Anwendung Patchen, befindet sich die Reparatur Dateien im Verzeichnis C: \ WINDOWS \ Installer werden ebenfalls aktualisiert. Dann, wenn der Benutzer von Add „Reparieren“ wählt / Entfernen Programme der aktualisierten Patch-Dateien verwendet werden, als auch.

Ich denke, dass die binäre diff Methode von John Millikin diskutiert muß in anderen Betriebssystemen verwendet werden. Obwohl man könnte es in den Fenstern machen funktionieren wird es etwas fremd sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top