ClickOnce is a terrible solution because it does not work in the background, it only checks startup and can significantly slow down startup time.
Chrome, on the other hand, periodically checks to see if the application is running, silently downloads the update, and then installs it when you say “OK, why not.”
From the user's point of view, there is very little delay, and the material simply continues to interrupt.
Shadow copying will be your best bet. You will want to write a temporary event that periodically checks the web server for updated components and downloads them as needed. A shadow copy is a way to replace them.
Developing your modular modularity will also help - instead of downloading every single file involved in running your application, you can design it so that the kernels can be updated independently, each time reducing the payload for the end user, they download your updates.
For a more extreme solution, various vendors provide update services such as InstallShield.
source share