ELI5: How do programs from client PCs receive updates?

Some GUI applications give users the option to "Check for Updates". I want to set up that kind of feature for my console application. How does this work? What is it called?

What I'm hoping for is the following:

1. I write code, unit-test, debug, build -- this, reiterated until I can build a working executable.

2. As it's done right now, I just move the executable from PC to PC (USB transfers/email/etc) and run it directly. This distribution process is cumbersome: if I make changes to the code, I have to track which PC needs to be updated and to what version, and then I have to somehow get the .exe onto the deployment PC.

What I'd like to do is just rebuild the executables/.dlls and then have the client PC pull the changes.
Last edited on
I am not an expert (I have not done this professionally) but my understanding as a gamer is that the program connects to a known server (hard coded server info) and tells it the version it is running, and the server responds with yes/no on update. If there is an update (this is the part I don't understand well) it will somehow 'stop locking' its files (eg the dlls can be over-written) and launches a download (could just be simple UDP or TCP connection) of the update. The server probably has multiple updaters (likely, just zipped into exe file format) that do an update from (any version to current version). Once downloaded, it launches the update and then restarts itself or whatever to use the new libraries and executable and so on.

The devil is in the details of that, of course.

Some games do this via a launcher program that checks the updates and then launches the game. But some of them do it from the game program itself. If you go with launcher program design, you don't have to figure out the unlock/suspend part that allows the files to be overwritten.

if this is in-house it is much easier as the drives can be cross mapped to talk to the file server as if a hard drive, without the networking parts, you don't need a server just a file naming scheme (eg timestamp.exe, 20210201.exe for today) and pull it down & run if you need it... (this, I have done, but again, its trivial). The major zip programs (but not windows' built in one) can all make .exe files of your archive with a command line switch. I am fairly sure visual studio can have a post-build user defined operation to bundle it up for you.
Last edited on
Registered users can post here. Sign in or register to post.