COMMERCIAL AND PROFESSIONAL APPLICATION DEVELOPMENT
Part Six - Installation and Integration

Written by Stéphane Richard (Mystikshadows)

INTRODUCTION:

Welcome to the Sixth and final part of this series. I don't have to remind you of everything we've covered in this series so far, If you've read them all, I'm sure you already know what you learned. In this final part, we will be covering the installation and integration process, or whatever comes after the application is ready for distribution to your users and/or your clients. The installation process isn't a simple question of creating the installation and running it on the users machine or having the client run the setup. The creation of the setup files is a process in itself and there are certain things to consider while creating the setup file. Reason why I mention this is I've seen people create a setup for their application and when the client executed that setup, either some other program didn't work anymore, or worst, the whole system when into a rebooting loop and couldn't complete the booting process anymore. All this could have been avoided with the proper set if precautions to take when making your application installation.

This is what this last part of the series will be about. We'll see what these considerations should be, we'll look at the tools we have at our disposal because just like the other parts of the development cycle, there are tools out there specifically designed to help make the creation of an installation system straightforward while minimizing the risk of software conflicts like the two examples I mentionned above. Let's start from the beginning and work our way down the installation process and see what happens.

WHAT IS AN INSTALLATION:

Well, there's two possible answers to this question and both of these entail a very different set of considerations and precautions to take. When you think about it, there's two types of development projects, as mentionned, in the corporate world. There are the applications developed with the goal to be sold as a commercial product and there are the application that are created to be used either by the employees of your firm, or one specific client. Let's take the time to review some specifics of these two types of application project. This will help us, later in the document, to see why they are so different and therefore require some very different sets of considerations.

Again here I can safely mention that preperation is definitaly the key. And to prepare yourself for an installation process requires nothing special. You need to know where the application is going to be installed, what could be already present, and how you can avoid overwriting anything that could cause a conflict of some sort once your application is installed. Once you have all that information, creating the installation can be quite easy, and quick provided you have, once again, the right tool for the job.

WHAT ARE THE TOOLS AVAILABLE:

There is more than one installation tool available, some companies offer different products for different types of installation needs. There's only two companies that I will talk about here because they are the companies/products that I have had teh chance to work with and can give you enough information about them so you can make a choice on which. When you have all your installation specifications and the considerations you are equipped to make the right choice when choosing the installation system you'll need. That is assuming your firm doesn't already use one and that you are limited to using that system only to create your installation.

Tools like this really shorten the time to create an installation for your application even today. And for that reason alone, they should very seriously be considered, not just in commercial or professional applications but even if you are creating a game or other types of applications. Their usefulness has been proven time and time again over the years not just for me and my installation experiences, but for every single one of my collegues. You'll see why later in this document. For now, suffices to say that they are great tools that really fill a need that just wasn't met before.

Now that you know of the existence of these tools and all the time (and many headaches) they will save you. The time has come to officially start the preparations for the creation of an adequate installation system for your application. To do so, as I mentionned, you need to know what you are installing exaclty, and what you will be installing on as well. Let's take the time to see the special considerations to take.

SPECIAL INSTALLATION CONSIDERATIONS:

It's important to note, right from the start, that these considerations should apply to both commercial and professional application projects alike. Whenever you install an application on any user or client machine, you need to be sure of what exactly the installation is supposed to do as well as have some means of knowing what the installation process actually did once the installation is over. In a perfect world, the "what it should do" and "what it actually did" lists would be the same, everything that should have been there is, and nothing else, installed on the user's machine has been tempered with by your installation. Here we will list the danger zones that you need to watch out for before you actually start copying the files and registering DLL's and ActiveX controls should the need be. As per our project, once again the considerations will pertain to the Windows™ environment.

These are the main problem areas that need special attention as far as installation is concerned. When you create your installation script or decide on the list of files you'll need to copy, you need to be careful about these areas. You can't be to careful when it comes to this because if you're not carefil the installation process can be responsible for many phone calls or support emails that didn't really need to happen if those precautions were taken. Let's take each of these danger zones again, but this time we'll look at what we need to be careful about.

As you can see, there's a possible and fairly easy solution to all problem areas. The biggest trick I can give you is to not copy a file if it doesn't need to be copied. You can't really tell yourself "I'll copy it just to be sure" because in many case, doing just that is what will make you unsure and ultimately cause you support time that you could have easily avoided by taking the right precautions. Another good trick is to copy the least amount of files as possible. This just help minimize the list of things to watch out for and shortens the analysis of a problem when it does occur. The less file the quicker you can go through them and find the problematic file and correct the situation.

In the case of a professional application, other concerns will be how each of the user's machine will be accessing the database. Usually, the users or clients company helps you by making sure that each user's mapped drive for the location where the database will be is called the same thing for everyone. There may be cases however where a user mapped his network drive as F: and another user, in the same company, has it's access through his G: drive for some reason. When that happens, you can know about it in advance and instead of just adding a static path to the registry, you could offer a dialog that let's the user select the path where the network database is located. Simple considerations like this at the installation process is easy to do and the time and issues it will save you is well worth the little extra effort to have a good installation process. Believe me, if you take the time to pay attention to these considerations properly and give yourself the time to acommodate for these circumstances appropriately, you'll thank yourself in the end.

Another thing that is gaining popularity fast today is online updates. This is a situation where the client has the option, from the application, to check for the presence of a newer version and could select to install the newly found version. For this all you need to know is what version the user currently has. Connect to the download area of your website and check the version of that file on the server. If they match, there is no need to upgrade. If they don't, you download the version from the server and overwrite your existing version (if all there is is the executable to upgrade). If the upgrade entails that other files be downloaded as well, you'll need to unregister those files, overwrite the old version on the user's machine and re-register the files. Aside the actual connection to the internet and the getting of the files you need, the rest is the same as a regular installation process. This means that the same precautions that i mentionned here will also be the same for an online update.

AND FINALLY WE ARE TRUELY FINISHED:

And this concludes our exhaustive series on commercial and professional application development. There was, once again alot of material to cover even in the installation process. Well my mentality stayed the same throughout this whole series. Preparation is the key to the success of a project of any size (but especially for the bigger scale applications). As far as the installation process goes, the best preparation you can have is if you take care of those precautions I mentionned and if you can get a list of files to copy along with their version numbers so you can compare them later in the installation process when you copy those files. To make a long story short, the more precautions you take, usually, the less problems you'll have throughout the installation process.

As always, I'm open to comments and suggestions. This series represents a general point of view on the development cycle from start to finish. Perhaps in your professional experience, you've experiences things that were quite different than I did, that's very possible. Maybe, in the analysis phase you used very different tolls or methods than those I have mentionned in this series. If this is the case, by all means, do let me know, the real purpose of this series is to be as generic as it can so you can apply what you've learned to your projects so if your company uses totally different tools or methods in their development cycle, I'd like to know about them so I can update this series to be as accurate as possible. I hope you found this series useful or insightful in some way and I hope you enjoyed reading it atleast as much as I enjoyed writing it.

MystikShadows
Stéphane Richard
srichard@adaworld.com