Z-Net 3: An Update on Updating!

Tuesday, November 12, 2013

How could an update with cool new features be even better?

Not having to download and install it!

Looking back at all of my Z-Net projects, zbattle, Kaillera and others, I find it kind of strange what common feature so many other programs have that they all lack. The feature I'm talking about is "Automatic Updating".

Think about it. The purpose of these programs has been to make tedious and somewhat complicated tasks simple and mostly automated. So why should installing new releases be any different? Sure, with a good installer, installing a update requires little more then mindlessly pressing a "Next" button over and over, but there's room for improvement.

Without Automatic Updates users need to know a update is available on the website, go there, find the link, download it, run the installer, spam left mouse click a half dozen times, and run the newly installed program.

All that can simply be replaced with "See the program inform you an update is available, then proceed to download, install and run the update itself". That can require no user interaction at all. Or at the most a "Yes/No" prompt asking the user if he wants to install the update.

So why haven't we seen this feature yet? Well, speaking for my Z-Net projects, I can point the blame at both an underlining design aspect of the projects and at the dependency of free services.

Z-Net's have always been created with IRC being the sole back-bone in mind. This is because using IRC is free. And because IRC adds a certain level of security and stability. The Z-Net projects are Freeware. Meaning I don't make money off them. But hosting traditional servers does cost money. I want my projects to sustain themselves. My point about security and stability comes from the fact that in the event, if for whatever reason (Hacking, permanently going offline, policy/tool changes, etc) Z-Net can no longer use the IRC server it points to, I can simply just move it to one of many other IRC server's.

So what's changed? Just that I want the scope of the projects to grow. And I want to make things easier for users as much as I can. Those desires have caused me to re-approach my thinking on the dilemma of how to add certain features that have remained roadblocked by a need for a dedicated non-IRC server.

With my new found determination I started wracking my brain. Exploring the details of as many potential options as I could find. Calling myself out on my assumptions of why I can't do something a certain way. And after a few days I felt I had the solution!

Triumphant, I started moving forward with the planning and coding, as I felt it was now worth the effort to do so. But it wasn't exactly smooth sailing from there. A few times my plans seemed to fall apart around me, and caused a complete halt in my work for up to a couple days at a time. Even now, my plans arent as secure as I felt they were when I started. I do however feel they are solid enough to warrant not abandoning this feature. I even have a backup plan!

Now about the details of the feature itself. I threw around several variations of how to implement it. What I decided on hinges around 3 things on external non-IRC servers. A "Latest Version" file. A file containing a list of the individual files being updated. And the files themselves. It all may sound strait forward, but worth noting is my setup allows for hosting the files on a different server than the other two. And even on different servers for each individual file. This keeps things flexible enough in case I lose my file host.

Since the project is still early in its development, and the GUI work is to be done later, I don't have any screen shots. But I can tell you about the basics of the interface for this Auto Update feature. I decided on using a splash screen. I wanted one anyway as splash screens are usually stylish, and such screens are a great first impression with programs. Style is something that's really important to me with this project. So it's a natural fit. But such a splash is also the perfect place to have the updates status messages displayed. Along with that there will be 1-2 progress bars in the splash screen. The screen will stay open a few seconds and lead into either the Login Info window or the Main window itself.

I'm sure there are still some kinks to be worked out. I'm happy I got this done though. It's something I felt needed to be done as early as possible. For testing phases it will help greatly in ensuring all testers have the correct versions running.

Now I need to think about what's next. Right now, I just don't know.


Post a Comment