I have a question on how I should design an update system for my program called PatchCraft. (I know this is a game design forum, but I promise my program is for a game.) So as it is, the update system simply asks if the user wants to update, and doesn't do anything about users that say no, which will be a problem later when the database PatchCraft runs off of starts changing for a future update. If the database changes and files are moved around, and an older version tries to access a file that isn't where it was, this will obviously will cause bugs and crashes. I had the idea to make some updates "critical" so when the user doesn't update, he/she is locked out of the database to prevent crashes. I also thought of implementing other things like "Only ask once", "Update automatically", and "Always ask" options. Since there is no reason to use a previous version because I don't plan on removing features, should I just consider every update critical, automatically update without user consent, and lock previous versions out of the database in the event they find a way to not update? Feel free to look at PatchCraft at http://go.to/patchcraft and let me know what you think about how the update system should be.
The norm these days is whenever the user starts the game the it first checks for updates and then automatically downloads installs any patches. That way whenever the player starts the game it is always up to date. Or you could do scheduled checks for patches and download them in the background everyday and then apply them when the game is started.