Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 722303
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T05:58:27+00:00 2026-05-14T05:58:27+00:00

I am not interested in any auto update solution, such as ClickOnce or the

  • 0

I am not interested in any auto update solution, such as ClickOnce or the MS Updater Block. For anyone feeling the urge to ask why not: I am already using these and there is nothing wrong with them, I would just like to learn about any efficient alternatives.

I would like to publish patches = small differences that will modify existing files of the deployment with the smallest possible delta. Not only code needs to be patched, but also resource files. Patching the running code can be accomplished by maintaining two separate synchronized copies of the deployment (no on the fly changes to the running executable are required).

The application itself can be xcopy deployed (to avoid MSI auto-correcting the modified files or breaking ClickOnce signatures).

  • I would like to learn how to handle different versions of patches (e.g. there is a patch issued that fixes one error and later another patch that fixes another error (in the same file) – users may have any combination of these and there comes a third patch – in text files, this may be easy to implement, but how about executable files? (native Win32 code vs. .NET, any difference?)

  • If the first problem is too hard to solve or unsolvable for executables, I would like to at least learn if there is a solution that implements simple patching with serial revisions – in order to install revision 5, user must have all previous revisions installed to ensure validity of the deployment.

  • The patches can be issued as downloadable files from a website – no auto-patching functionality directly from a running application is required.

Are there any existing solutions to accomplish this?

NOTE: There are a few questions on SO that may seem like duplicates, but none with a good answer.

This question is about the Windows platform, preferably .NET.

So far, wyUpdate seems to fit this problem best. Still interested in alternatives.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T05:58:27+00:00Added an answer on May 14, 2026 at 5:58 am

    You will not be able to create one binary patch that can apply to multiple versions of the program, so the following scenario will not be possible:

          org+p1
         /      \
        + p1     +p2    <-- note, p2 is the same patch both places
       /          \
    original       org+p1+p2
       \          /
        + p2     +p1    <-- ie. the p2 on this line is the same as the one above
         \      /
          org+p2
    

    You will instead have this scenario:

          org v.2
         /      \
        +p1      +p4    <-- note, different patches now
       /          \
    org v.1        org v.4
       \          /
        +p2      +p3
         \      /
          org v.3
    

    You should easily see how complex this becomes if you want to allow your users to cherrypick the fixes they want to apply. Yes, this can be done with text files, after all, that’s how branching and merging works with most source control tools, but they work on the basis that you can insert and delete stuff in files without compromising the rest of the file, and that doesn’t work with an executable.

    Note: A special case is fixes that replace bytes, but doesn’t insert or delete anything from the file. As long as multiple such fixes doesn’t overlap it would be possible to cherrypick which ones you want to apply. However, such patches are very rare.

    You should, as you’ve hinted in your question, work with a serial timeline, possibly with single hotfixes to existing versions, so you might have this instead:

                                          +-- most up to date version
                                          |            
                                          v
    org v.1         org v.3             org v.4
       \           /       \           /
        +p1       +p2       +p3       +p4
         \       /           \       /
          org v.2             org v.4
           \
            +p1.1
             \
              org v.2 hotfix 1
    

    As for actual code, I have a diff/patch implementation, but it is probably far from optimal. It currently takes a lot of time to produce the patch files for any sizable file. The patches are fairly small, but I dare say other algorithms will produce better patches. Sample tests with bsdiff and bspatch produces smaller patches.

    However, the code is here if you want to play with it. It is part of a larger class library and I can’t remember how much of it (the rest of the library) you need to compile just the binary patch classes, but it’s all there. The class you want to use is the Delta2 class.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Does anyone know any resources (books/websites/whatever) related to parsing. I'm not so much interested
e.g, foo1 foo2 foo10 foo100 rather than foo1 foo10 foo100 foo2 Update: not interested
Does anyone know a good .NET dictionary API? I'm not interested in meanings, rather
I'm interested in learning Haskell on my own time (not through a course), but
I'm not a math guy in the least but I'm interested in learning about
Not that I'm doing something like that, but I am kind of interested how
I'm interested in speed, not good looking code, that is why I'm using array
I'm really interested in speech-to-text algorithms, but I'm not sure where to start studying
I'm not looking for a full implementation, I'm more interested in how they do
This is not yet particularly programing related but, I am very interested in how

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.