One of the major challenges facing Access developers is distributing their applications. SageKey, long a provider of components for Access installation solutions, steps in with a complete solution. Editor Peter Vogel takes it for a test drive.
I recently read in a respected journal aimed at Access developers that the problems in distributing Access applications comprised the main reason there weren't more professional applications written in Access. If you're a long-time subscriber, these problems aren't new to you–Stuart Kinnear covered them in a series of articles in our March and April 2000 issues. Stuart's articles pointed out that the only way to create a reliable Access installation was to buy both an installation tool (for instance, InstallShield or Wise) and then a set of install scripts from SageKey. This solution costs well over a thousand dollars. Furthermore, since the installation tool you purchased is designed to create installations for any kind of application, you'll also need to develop some expertise in integrating the SageKey scripts with your install tool.
But SageKey has a new product that simplifies the process of creating Access installation packages while reducing your costs: the Access MSI Wizard (there are versions for Access 2000, 2002, and 2003). The Access MSI Wizard is designed specifically to create install packages for Access applications. As you can see in Figure 1, the user interface for the tool is a Wizard that guides you through providing the information necessary to create an Access installation.
As you work through the Wizard, you can specify almost everything that an Access developer needs and specify nothing that an Access developer doesn't need. The MSI Wizard will analyze your database for any components referenced by your application and add them to the installation package. In addition, you can list as many additional files as you need to make up your application, and designate one of them as your "back-end database" (when you create an upgrade package, the back-end database won't be replaced). You can also include a workgroup file and a Help file, customize the license agreement and the text displayed at startup during the installation, display your own icons, designate which version of Jet and MDAC are to be redistributed with your application, and control the command line options used when the application is started.
There's one warning. Even with SageKey's tool, there's one thing that won't change about an Access installation: the size. Even a relatively simple Access application will result in an installation file that's larger than 50MB.
Is the package perfect? No–but it's just in version 1. For instance, as part of creating your installation package, you need to include the Access runtime files. However, when these files are delivered to you from Microsoft they're often marked as read-only. The MSI Wizard (at least in the 2003 version, which I tested) fails when working with the read-only versions of these files, but the error message that's produced gives you no clue as to the problem. I ran into this problem and sent an e-mail to the company but hadn't received a response within 36 hours. So I called SageKey and was promptly routed through to one of the Wizard developers, who resolved my problem in about 30 seconds (and without making me feel foolish!). To be fair, the Help file that comes with the Wizard clearly states that the files can't be read-only. The Wizard won't let you create multiple shortcuts as part of the installation (you might want a variety of shortcuts so that your users can start the application with different initial forms displayed). For some limitations, there are workarounds: The Wizard requires you to put your back-end database in the same directory as your front end; however, you can handle this problem by ignoring the back-end database option and putting your data MDB file in the Additional Files list, which lets you put your back-end database wherever you want. These are all minor annoyances in an otherwise excellent package and an essential part of an Access developer's toolkit.