There's lots of ways to implement an automatic update check in your application, and many products that say they'll do it automatically.
From my point of view, there's a number of levels of "coolness" in auto-updating. Cool: Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee.
C self updating application
So when you try to overwrite them, you get ‘file is in use by another process’ errors.
The natural approach would therefore be to unload every non-OS library except the executable itself, followed by the overwrite action and subsequent reload.
However, we have a (brute force) escape: while we can’t unload managed assemblies, we can unload the whole App Domain they have been loaded into.
The idea therefore becomes to spin up the process with almost nothing in the default App Domain (which can never be unloaded), and from there spawn a new App Domain with the actual Processor code.
In the same spirit, they could call to an updatemanager service periodically to check for updates.