Menu

BCUpdateLib: Not really broken

August 2, 2012 - .NET, C#, Windows

Now that I finally have a windows machine with a internet connection, I decided to investigate issues I heard of from reliable sources that the BCUpdateLib immediate update was broken, and hopefully fix it.

I was expecting some catastrophic crash or hang or something. I ran it several times. It worked perfectly each time. Both the “immediate” update (which updates a single application, used for checking for and updating the application/game at startup) as well as the “full” updater, which allowed for the downloading of multiple BASeCamp programs.

Not encountering any issues, I decided I may as well touch up the immediate view; it now shows a better display for average speed, and it attempts to estimate the time remaining, which usually works OK. the “full” updater has some flicker issues while downloading that I don’t remember seeing previously, but I’m not sure how to fix that at the moment (and aside from that issue it works OK).

BASeCamp Full Updating Library

Full Updater from the BASeCamp Updating Library.

As can be seen in the images, the Full Updater is essentially a “full” update program, for BASeCamp products. One might think that it is ironic given my Animousity towards ‘Update managers’But this won’t be some silly program that sits in the background, and will either be a separate program (if at all) or simply integrated into many other BASeCamp applications, which may or may not expose the full functionality. I imagine I will probably be more likely to use the immediate mode. The ‘immediate’ mode is the name I gave for when the update form’s task is not to show and allow different updates but instead to directly start downloading and running a certain Application ID. Typically, this will be done from the main game itself, and as part of a set of prompts determining if there is a new version, and asking if the user would like to update or not, and then this will appear if yes, download the program, launch the installer, and then exit. (It exits so that the installer for that program can run).

Immediate Update

BASeCamp ‘Immediate’ Updater

Of course, as it is now it is still a bit unpolished; for example there is no way to cancel an immediate update and closing that form throws an exception, but these sorts of things should be relatively easy to streamline to make it as simple as possible. I had an additional- almost crazy, even- idea, as well- a “patch” concept, dealt with on the server side as well as the client side. The client code (C#) will know how to integrate a special patch file, and on the server side (PHP) it will know how to inspect two files and see the differences and pass along that file to the client. The idea being that the server can, instead of just giving a full installer, simply give the differences from the current version. I don’t think I will pursue this because in the ideal case it would work with the installer/zip file referenced in the downloadURL, and most people don’t exactly keep those around for easy access.

Have something to say about this post? Comment!