Thursday, August 2, 2007

Installer Progress Report

Hello. Well, I'm a bit short of my Thursday deadline. Due to some communication breakdown, I didn't receive any feedback on my previous week's installer which suffered from some Windows Service issues. Throughout this week, I focused on implementing the communication between BitRock and the dependency checking. I'm happy to say, that portion is working very well. Between my long hours last night, and today, the installer is very close to completion. However, there are a few kinks to work out; mainly the Windows Service issues. Below is a summary of the new features I've got implemented:

  • MySQL / Java Dependency Checking - The installer is now aware of these dependencies. If you have multiple MySQL installations, it allows you to choose which one you'd like to use for OpenMRS. If you don't have them, it presents you with a screen informing you of this, and asking if you'd like to specify the location to the dependency (maybe you have it installed in a custom location), or if you want the installer to load the dependency for you
  • User-Specified Dependency Validation - Since the installer allows the user to specify the location of all of the dependencies, I built in vaidation rules that verify the dependency exists where the user says it exists. It asks for the location to that particular dependencies binary, and then validates that it actually exists.
  • Smart Environment Variables - Depending on how the dependencies are installed (i.e they were detected, they were specified, they were loaded by the installer), the environment variables are handled accordingly using the given path.
  • Windows Services - This is a work in progress, but in my current installer I've implemented the code to create and start Windows Services for MySQL and Tomcat, provided that the user does not already have those dependencies installed. It's all very dynamic now that the dependency checking is in place because only things that need to happen, happen. I think this bullet point here will go a long way towards fixing the current "full" installer.
I've merged the "naive" installer with this current one with the exception of all of the bundled files. The reason is, with all of those files bundled in, it takes 5 minutes to build the installer every time I make a change, and then it takes 5 minutes to unpack those files during the installation (provided they need unpacked). Tonight, I put Vmware on my machine, and have started loading an XP image in it. This will simplify the process for me this weekend as I try to get the Windows Service issues fixed. My original thought was that they were failing due to not having an "empty" system in terms of dependencies, but I just found out tonight that's not the case. I do however feel strongly that using BitRock to install/start the services will fix a lot of issues, as opposed to executing awkward commands in a BATCH script.

There absolutely will be a release (or multiple) before the end of the weekend. I've been re-prioritized in that Paul wants the Windows Services fixed on the "naive" installer before I handle the dependencies, although the dependency work is in place and complete. So, I'll fight that battle tomorrow once Vmware is finished, and once the Windows Service issues are fixed, I'll release that. Then, I'll iron out a few things with the "smart" installer and release that as well. Promise.

This has been the most productive week by far, and it's really exciting. I have a kit things to show everyone, but Paul is adamant that he see the installer work on an "empty" system before he sees anything else, and I don't want to put out a release that doesn't get the system up and running just for the sake of showing off all of the cool features I've added. So please, bear with me on the slight delay and I'll update everyone tomorrow after the Vmware adventure. Thanks.

2 comments:

Paul Biondich said...

Zach, I think you've misunderstood my attempted helpful advice. It's important for you to get a working installer ASAP so that you can get a lot of input and feedback. Building everything perfectly with dependency checking, etc is a lot harder than simply showing the community that you can install MySQL, Tomcat, Java, and OpenMRS and have it work on a naked, naive system. Why not start simpler so that bug tracking and troubleshooting can be done in a little more of a straightforward way?

If you feel as if your new version will work on a naive system, then great... release that! :) But I think an initial measure of success is for someone to take your single file on a new install of xp, and have OpenMRS work correctly upon completion of the process.

That should be your first priority at this point. All the other circumstances are rare.

private said...

Paul, I totally agree with you. The past 2 efforts focused entirely on installing on bare systems. The first effort worked, but didn't have silent installs. The version from last week gets the system running except for the Windows Service thing. Basically, if I took out the service code, it would work. Through this week I went ahead and implemented the BitRock code to access the results of the dependency checking. I really ran into no issues doing that and as far as that affecting the rest of the installer, it really doesn't. That's sort of the great/nice thing about having the dependency checking implemented now, is that it will only unpack the things it needs to unpack. It doesn't complicate my process for building on a clean machine at all. Right now the only hiccup is the Windows Service deal, other than that everything works as it should: MySQL and Tomcat get configured by BitRock, the MySQL scripts get executed, the war file is deployed to Tomcat, etc... I'll get the service issue fixed tonight with Vmware and release the installer from last week with this update. There won't be much more work involved with releasing the dependency version, as I merged the two installers last night while Vmware was downloading.