Code, Build, Repeat
FinalBuilder adds new .NET capabilities to its project-building repertoire.
I looked at FinalBuilder about a year ago when it was at version 1.2, and I
was impressed. In the intervening time, the version number has gone up to 1.5
thanks to a steady stream of releases, so I thought I'd take another look. Now
I'm even more impressed.
FinalBuilder is a product designed to help you build software in a simple and
repeatable fashion. The program's graphical interface is populated with a list
of actions. These include such things as:
- Run a DOS command
- Copy or move a file
- Compile a project
- Check in or check out files
- Build an installation project
- Send email
- FTP a file
- Compile a help file
- Create a zip file
- Run a testing project
As you add actions to your FinalBuilder project, property sheets prompt you
for file locations, target files, compiler flags to set, and so on. Other actions
allow you to add looping and conditional activities to a FinalBuilder project.
Actions also support scriptable before and after events that allow you to tie
in an active scripting language for additional processing.
New actions in the last year include compiling Visual Studio .NET projects,
performing source code control operations with Perforce or CVS (as well as VSS),
compiling Borland C++ Builder projects, reading and writing Registry keys, compiling
Visual C++ 6.0 projects, and running InstallShield Developer 7 or 8. There's
also an API to let you plug in your own actions if you like (using Delphi).
When you're done, press a single toolbar button and watch FinalBuilder get
to work. In one fairly complex project, for example, my FinalBuilder project
updates the version numbers in some interlocked Visual Studio .NET projects,
builds them, copies DLLs to testing folders, labels the VSS repository with
the build number, runs unit tests, builds documentation, zips up the results
(using the build number in the zip file name), uploads the results and the log
files to an FTP server, and sends e-mail to the project participants. If anything
goes wrong, I get a clear message on screen and in the log file. You can trigger
builds from the command line or on a scheduled basis, as well as from the GUI.
It takes some effort to set up a system like this, but it's worth it. The easier
you make builds, the more likely you are to do them on a regular basis. With
FinalBuilder, even a complex build only holds my attention for thirty seconds,
until it sends me e-mail. That's a great productivity enhancement.
Mike Gunderloy, MCSE, MCSD, MCDBA, is a former MCP columnist and the author of numerous development books.