Assuming the hash based system is implemented, whenever a client is updated, it should compare it's hash of a rice to the server's hash. If they differ, it will ask the user if they'd like to update. There should also be options for archiving old rices so they are not lost or if the new rice is broken it can easily be rolled back.
I think the more proper way to do this would really be to just git clone the github repository and when updating is needed, symlinks will be removed, git repo will be updated, and then symlinks will be recreated.
Assuming the hash based system is implemented, whenever a client is updated, it should compare it's hash of a rice to the server's hash. If they differ, it will ask the user if they'd like to update. There should also be options for archiving old rices so they are not lost or if the new rice is broken it can easily be rolled back.