Giter Site home page Giter Site logo

patchgui's Introduction

PatchGUI

A cross-platform desktop application for creating and applying patches to binary files.

Video Demonstration

Releases

Releases Page

Creating a Patch

To create a patch for a file, the source file and new file must both be supplied.

  1. The source file is the current version of a file to which the patch will be applicable.
  2. The new file is a new version of the source file with differences that the patch should apply.
  3. Filename and path for the patch file to be created.

Preview1

After creating the patch file, it can be used to update any copies of the source file, applying the changes on a binary level.

Applying a Patch

To apply a patch on a file, the source file and patch file must both be supplied.

  1. The old file is the previous version of a file, in which the changes specified in the patch file will be applied.
  2. The patch file is the file containing the changes to be applied.
  3. Filename and path for the new version of the source file to be created.

Preview2

After applying the patch file to the old file, the new file will perfectly match the one used to generate the patch file.

Use-case

The main use-case for this software is to generate update files that are vastly smaller and faster to download than entirely new files. These patch files can be generated and applied using this tool, or they can be generated with this tool, distributed to users, and applied using an update software that includes the bsdiff library. This makes downloading updates for applications much faster and take up much less space.

By using suffix sorting (specifically, Larsson and Sadakane's qsufsort) and taking advantage of how executable files change, bsdiff routinely produces binary patches 50-80% smaller than those produced by Xdelta, and 15% smaller than those produced by .RTPatch (a $2750/seat commercial patch tool).

Bsdiff runs in O((n+m) log n) time; on a 200MHz Pentium Pro, building a binary patch for a 4MB file takes about 90 seconds. bspatch runs in O(n+m) time; on the same machine, applying that patch takes about two seconds.

Libraries Used

Bsdifflib: https://github.com/petervas/bsdifflib (based on Binary diff/patch utility version 4.3, written by Copyright 2003-2005 Colin Percival [email protected] available at http://www.daemonology.net/bsdiff/)

Qt5 https://github.com/qt

patchgui's People

Contributors

raflos10 avatar

Stargazers

 avatar  avatar Michael Corbett avatar  avatar Christopher Layne avatar Berny23 avatar

Watchers

 avatar

Forkers

clayne

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.