Do you remember your first days with Visual Basic? I sure do.
I'd just graduated from Microsoft Access and was thrilled at the prospect of being able to create my very own .EXE files. No longer would my users need to rely on Microsoft Access. Oh no.
Unfortunately, my enthusiasm was short lived. Very short lived, actually.
It turned out all Visual Basic applications required the 1.3MB VB runtime DLL to operate, dammit. Enthusiasm getting lower.
And if you wanted to give that to your end user, you'd need to create a setup package. Enthusiasm getting even lower now.
And that meant even the simplest 'Hello World!' application took a minimum of two floppy disks. Enthusiasm gone.
But a few weeks ago, I stumbled across Fusion 1.0, from UK-based development house BitArts. It promised to package your application and all it's dependencies into one, compressed executable. And that meant no huge file sizes, no boring setup routines, no worries.
When we did a poll a couple of months ago, this file dependency issue ranked as the most requested VB7 feature. So could Fusion provide a solution for all those frustrated developers? Read on to find out.
I must admit that after talking with the PR guys at BitArts, I was impressed. Fusion seemed to have it all and infinitely more.
So I checked out their evaluation copy, available as a free 1.3MB download. Installation was a doddle, eating a mere megabyte of disk space. But be aware you'll need to install on a machine with Internet and e-mail access to complete the initial registration.
After skipping the nag screens, the first thing that strikes you is the aesthetically pleasing user interface. The options are exceptionally clear and you really don't need to delve into the help file to get started.
Creating a completely self-contained executable consists of three separate main steps—selecting the file, adding any dependencies, and then processing. And it's all surprisingly easy.
So I decided to try it out on my project—Sahara—an Internet content extractor I've been working on...
Selecting the File
The first step is to select your compiled file. This could be an EXE you created using Visual Basic, or perhaps a DLL, OCX or Screen Saver file.
I went and ahead and choose my VB-created 'Sahara.exe' executable.
I also specified the filename of the soon-to-be-made, self-sufficient EXE. In the evaluation version, it will be named 'bitarts_evaluation', no matter what you enter.
The BitArts website says the final program won't run if that 'bitarts_evaluation' name is changed, though I personally managed to chop it down to just 'bitarts', without any problems.
To the hobbyist, such a name may not be much of a problem—but it's a clever way to get hardcore programmers to register and rid of the limitation.
Add Any Dependencies
The first thing I noticed in the Dependencies tab was that Fusion had already detected this was a Visual Basic executable and added the Visual Basic 6.0 runtime library (MSVBVM60.DLL). Hmm, impressive!
But of course, most projects rely on much more than just the VB runtime. They use external OCX controls and weird-sounding DLLs, too. And to handle this, Fusion has a built-in function that can analyse the original Visual Basic project file and automatically add dependencies for you.
I tried it with my Sahara.vbp project—and it added both an OCX and DLL file that I'd referenced in my project.
But for whatever reason, Fusion skipped one very important file—a custom DLL that was definitely referenced in the project. Still, no harm done—I simply manually added it to the list of dependencies by clicking the little + button.
Processing the File
So we've selected the file and added the dependencies. Now for the crunch.
After clicking the Progress tab, I hit the 'Run Fusion' button.
Five minutes, two 3D progress bars, and a lot of whizzing and whirring later, the program had finished processing—and a smooth-look chart appeared on the screen.
The graph displayed a comparison—the total size of all the files compared with the size of my newly created, compact EXE.
Mine cranked in at 1.2MB, from an initial 2.6MB. Not bad, huh? Compression rates typically range at between 50 and 70%.
And all that chopping, changing and squeezing means the probability of a decompiler getting its hands on my valuable code is also dramatically reduced. A double whammy if ever I saw one.
However I can't say this last step was always problem free. If you try opening Visual Basic whilst Fusion is running, you'll receive an illegal operation error. And I occasionally received 'dependency is already open/locked' messages, causing me to reboot then try again. And again.
But these nitty issues are really the exception rather than the rule. Most of the time, I ended up with a small, all-inclusive executable complete with all its required OCX and DLL dependency files. And it could all fit on one disk!
Incidentally, I went ahead and tried the executable on two separate computers to ensure it worked. And it did—the DLLs were registered, the OCXs put in place, and the main project file fired up. In a word, it worked—and well.
This is a groundbreaking product that not only squeezes your program into the smallest of spaces, but also packs all OCX/DLL dependencies into a singular, self-sufficient executable.
All that compression also dramatically reduces the possibility of a decompiler getting its hands on your code. And these advantages aren't restricted to VB developers, neither—Delphi, C++ Builder and Visual C++ programmers will find Fusion equally as useful.
On the thumbs-down side; at #130/$199 the full version is fairly expensive for the hobbyist (though nothing short of pocket change for large corporations). Also, I did experience a couple of nitty processing problems along the way.
But all these issues fade in comparison with the long-term problems Fusion 1.0 very cleverly solves.
If you check out just one Visual Basic tool this month, make sure it's the free, evaluation copy of Fusion—then decide for yourself whether it's worth the dough.
Well done, BitArts—a breath of fresh air in the development market.
You can download the trial version of Fusion 1.0 from Bit Arts at www.bit-arts.com