Wednesday, April 7, 2010

Incremental Updates

Last week I mentioned that we had to make some changes to our update system in order to roll out the N64. I decided to explain what we changed. Why? Well, I think it's cool. I guess that will have to be a good enough reason.

Our first auto-update system was actually put together by another company. When a new version came out it would download the new setup executable and run it. This did have some advantages, but the install had to be rerun each time a change was made. The user was also downloading much more data than they needed to. Admittedly with all the bandwidth we have at our disposal it may not seem like it was worth troubling with. Still, I don't like the idea of having to download a 5meg setup in order to update a 5k file.

With our first attempt we decided to have the updater only download and install the files it needed. We wanted the changes to be automatically put in place and the browser to restart itself. We got all that in the first pass. However, we did overlook a few things. First, the auto-updater can't update itself. That was a bad oversight on my part. It a simple little program, but if it needs to be changed it's not easy to roll out those changes.

Another shortcoming is the fact that we had one update location. So if we updated one file and then decided to update another we had to give the first one time to get pushed out or put both in the current update. The problem with this is obvious. If we just keep putting in files before long it would be so big that we might as well have kept the setup download system. If we only put in the latest files someone who hasn't logged in for months might get a half-updated version.

What was the solution? Incremental updates! With the system we rolled out last Friday the updates go in order. You start from whatever version you currently have and then update one after the other until you are current. This will allow us to make minor changes in very small steps. Because of this we can roll little changes out more quickly instead of waiting for group of changes to pile up. If we only have to change one file that's fine. We change it and go on to the next version.

This is a good step for our updating process, but I'm not done. We still need the ability to append files, update the updater itself and possibly make small changes to Console Classix registry settings. A good example of this is with the n64 ini file. We are going to have to makes changes to it, but we don't want our changes to overwrite any custom settings our users have put in place.

All in all it's progress, but we still need to do more.

1 comment: