This has been discussed already, and there's no mistake or no error, it's all normal. It's just you are assuming the update button would automatically disable itself if there's no update required, which is not the case.
What the update button does, is to CHECK if there's an update, so it's always active. To do what you were assuming the update did ( disabling itself if no update is required ) would require automatically checking ALL products when you start the program, so all button updates would start disabled or enabled depending if the product needs an update or not.
But the issue is, JUST checking takes time, and checking for all products at start would take way more time than just checking (under your command) for one product.
This because we don't do unreliable shortcuts like other updaters do, like setting a flag in the registry or checking a single file.
Those are all unreliable because registry keys might lost sync between what's you have on file, or you might have changed/removed the critical file that was used to check for the update. So, we prefer doing an update check the proper and impossible to screw up way, which is checking ALL files of a product, one by one, using their MD5 checksum against the ones on the server. This way, you can be absolutely sure you won't ever miss an update file, no matter what you do ( removing files, renaming files, etc. ). The downside of this, is the *checking* takes way longer, so we don't do any auto-checks on start, which in turn means the update buttons will always be active.
Another way of saying this, is assuming the "Update" button really means "Check for updates", and it will all more clear.