I have a Windows program that needs to update itself from a server automatically.
It is already able to transfer files from the server and update + validate things l
Consider ClickOnce deployment which will help you to insall/replace/update latest version from shared location and executed.
I like the patcher/maintenance/feature add/remove tool approach. Even if for some reason you need to update something as trivial, I see no "chicken or egg paradox" here, it is more of a "one hand washes the other" thing.