The Wildcard Updater
Hours: ~60. Produced: 2008.
I created the Wildcard Updater in 2008, for updating various applications I built for Wildcard Technologies, a company which I started with a partner and in which I had a 50% ownership stake. Even though we were working mostly at offshore projects, I dedicated a fair amount of time to in-house products.
Two of those in-house products have grown large enough to require and feature the Live Updates insured by the Wildcard Updater System. As a matter of fact, they are featured on this website: eTimeKeep and The NeverFail Messenger.
I mentioned the “Wildcard Updater System”. That’s because this is not simply an application-specific updater. I am a huge fan of code re-usability, so I created a system which I could use in all my applications.
Technical Aspects
The system relies on the Wildcard Update Builder, which you can see in the screenshot below. This is the Administration-side of the Wildcard Update System. It downloads a binary-serialized Update Data File from a certain Update Website (configurable) and allows us to set up the currently used version for any of our products. The file can then be saved and uploaded back to the Update Website.

The Wildcard Updater Admin Screen
Any Applications which use the Wildcard Updater System will usually check the Update Website on startup or during their execution. The Wildcard Updater Class Library will be used to decode the data found in the Update Data File. This data will tell the Application what version is currently set as Active. This way, we can even roll back to previous versions whenever we wish to.
When the Application determines that an update is required, it will download the Update Archive from the Update Website and then shut itself down, but not before launching the Wildcard Updater File Installer. This is a separate application which takes care of unpacking the Update Archive and updating the required files. The system uses the 7Zip SDK for superb compression rates and a File System Specification Structure for very detailed operations, including the patching of files.

The Wildcard Updater File Installer
The system is highly redundant. It can use multiple Update Servers: in case a server is down, connection to another one will be attempted. The Update Data file can be disseminated to all websites at once using the Update Builder. Furthermore, strict hash-checks are employed to safe-guard the update process.
And of course, to ensure no unauthorized persons can bust into our update system, the Update Builder requires login before allowing access to the modification of the Update File.

The Wildcard Updater Login Screen
Other Aspects
Like with any project, there are still many features which I would like to implement. But alas, like with any project (again), time is unforgiving. Greater priorities have pulled me away from C# in the recent years, so I haven’t had much use for the Wildcard Updater lately.
I wanted to Open Source it, but even that takes a bit of time, especially with systems of greater complexity (which rely on several applications & layers), mostly because of the functional diagrams and documentation I like to write when releasing something into the wild. Even so, I think it’s quite possible that the Wildcard Updater has a (glorious?) future ahead of it.
