Icon

MDM Zinc 2.5 for Windows (with Mac OS X Plug-In)

Cross-platform application development environment for Macromedia/Adobe Flash

Macromedia (or, I guess it's Adobe now) Flash is great for browser-based stuff, but let's face facts: it's pretty lousy for offline use. Sure, you can save Flash movies as standalone projectors, but the glaring lack of customization or ability to interface with the host OS has created a mammoth opening for third parties to drive through. Enter Zinc, from UK-based MDM, which (to put it simply but crudely) puts Flash movies on an enormous steroid regimen. How well does it make Flash into a full-blown application development environment? Let's find out.

What is Zinc?

Since it may not have been abundantly clear from the intro, let's define what Zinc is and what it does. Zinc is (for lack of a better term) a "Flash wrapper" program, in that it is designed to incorporate SWF files as the basis for offline or desktop applications. There are two sides to Zinc: the first is the actual standalone Zinc application, where you set various useful options for packaging SWF files into projectors (screensavers too, if you're a Windows user). The second side of Zinc is the code you write inside of Flash itself ({mdm}Script) that allows Zinc to turn your base Flash movies into truly powerful, full-blown applications. With the latest version of Zinc (2.5), MDM has added support for Flash 8-based SWF files as well as synchronous script execution, both of which are a boon for both designers and developers. As usual, the devil is in the details, so let's examine both sides of the Zinc coin.

The Zinc environment

Zinc comes in various forms—there's a Windows version, a Mac OS X version, a Mac OS X plug-in for the Windows version, a PocketPC plug-in, and even a command-line implementation. MDM is also promising a Linux plug-in as well as Universal support for Intel-based Macs, so Zinc supports (or will support, as the case may be) a broad base of platforms. With so many flavors to choose from, I should clarify what it is I'm reviewing today by noting that MDM provided me with the Windows version of Zinc 2.5 as well as the Mac OS X plug-in, the combination of which allows for cross-platform publishing from a single Windows-based program. With that in mind, let's take the tour.

When launched, Zinc presents a target application screen that contains a list of basic templates for various platforms (fig. 1). You can either choose to start from one of the templates, or start fresh with a blank project. Once you've made your choice, you're taken into the Zinc environment (fig. 2).


Figure 1


Figure 2

For packing in so many options, the interface is fairly nicely arranged. On the left is the Forms panel (fig. 3). You may recognize forms from their appearance in more recent versions of Flash, but for the uninitiated, forms-based development (at least as it relates to Zinc) allows you to effectively split up projects into various sections, each with its own Flash movie and associated settings. The main form controls a set of global options, while you can add additional sub-forms (up to 20 total, which is Zinc's current limitation) for really humongous projects.


Figure 3

Regardless of whether you use forms or not, you'll likely be spending a lot of your time in the center portion of the Zinc interface, where oodles of tabs control all kinds of settings for your projectors. There are the mundane and necessary options, of course, such as defining the SWF files to use and setting the projector's size and location, so we won't dwell on those. I would, however, like to take a trip around the horn here and give a shout out to the few of the tabs in order to present you with a better idea of the level of control you get by wrapping your Flash movies inside a Zinc projector.

Style. The Style tab packs myriad options for customizing the window that your projector "lives" in. From making the window semi-transparent to applying a mask (fig. 4) to specifying a startup transition (fig. 5) to choosing the mode of the window and which system buttons are active, Zinc's window styling options run the gamut from simple eye candy to more profound usefulness, depending on your needs.


Figure 4: That's no moon—that's a masked Zinc projector window.


Figure 5

Installers. In addition to packaging up your projects into nice, neat little projectors, Zinc also offers the option of adding an installation program to your projector (fig. 6). You can set your own bitmap, choose a default location, customize the setup message, and, best of all, add your very own legalese! Exciting! Sarcasm aside, you can also add extra files to the installer through a panel on the right side of Zinc's interface, which we'll talk about shortly.


Figure 6

Screensavers. If projectors aren't your bag, feel free to create SWF files for use as screensavers. Zinc can publish to a standard Windows .scr file (fig. 7). It's a bit of a shame that other platforms aren't supported with this feature, but you'll find that feature disparity between platforms is something of a running issue.


Figure 7

Trial software. Remember, Zinc isn't just about simple Flash wrapping—MDM would very much like you to develop entire applications with Zinc, and the settings in the Trial Options tab definitely fit that philosophy (fig. 8). In addition to being able to have your software time out in a number of methods (time from first launch, arbitrary dates, or number of uses), you can add serial number protection to your applications.


Figure 8

Splashscreens. Continuing with the whole application development theme, Zinc allows you to specify a bitmap (and a sound file, should you wish to make your programs extra annoying) to use as a splashscreen (fig. 9). You can even add a touch of eye candy to this step as well, as transitions can be used for just this step of your projector's launch process.


Figure 9

Variables. Zinc lets you set global variables (even secure ones, if needed) from within Zinc rather than Flash itself. It's not really Figure-worthy, so no picture for you here.

I've left out a few of the tabs, but you get the idea—Zinc packs plenty of bling for setting up projectors around your Flash movies. That was a pretty lengthy stay at the middle of the Zinc interface, so let's move on. To the right of Zinc's interface, you'll notice a couple of tabbed areas. The top area gives you a preview of your SWF file (fig. 10, left), as well as access to project templates (fig. 10, center) and a log of how your projectors build (fig. 10, right). The bottom area houses the Library and the CD ROM/Installer files, which are both interesting features in their own right. The Library panel (fig. 11, left) allows you to specify external files that will get packed into a Zinc projector. This feature comes in handy if you want to distribute a single executable that contains a hierarchy of external files, which Zinc lets you unpack and access at runtime. Then there's the CD ROM/Installer files tab (fig. 11, right), from which your can build directories and file structures external to the projector. If you're building an installer, this hierarchy represents all the files that will get installed along with the projector (instead of packing files into the projector itself, as with the Library). If you're looking to burn a CD, this same panel allows you to lay out the entire structure of the CD and burn it directly from within Zinc.


Figure 10


Figure 11

And, just to finish up our trip around the Zinc interface, it's worth pointing out the horizontal toolbars at the top and bottom. At the top is the toolbar (fig. 12), where file icons, a space for your application's title, and a row of icons that represent all the various tabs reside.


Figure 12

At the bottom (fig. 13), you'll see an icon that displays which platform you're currently authoring for, as well as build settings.


Figure 13

So that's that. There are more options for your projectors than you can shake a stick at, but that's only part of the Zinc equation. While you're perfectly welcome to stop at simply wrapping up your Flash movies, Zinc's real power asserts itself once you take the next step, which is done from within the Flash IDE itself.

When in Flash...

To really get into the whole application-development-using-Flash aspect of Zinc, you're going to have to get familiar with {mdm}Script. What, pray tell, is {mdm}Script? Well, without getting too technical, {mdm}Script extends ActionScript within the Flash development environment to enable your Flash movies to do all sorts of things that Flash by itself, well, just can't. There are hundreds upon hundreds of {mdm}Script functions to choose from, but let's look at a small and simple example. Say you want to find out where your Zinc projector is currently "living" on your system (whether that's on the local drive or removable media is irrelevant). In its simplest form, you might use something like the following script:

var path = mdm.Application.path;

So, if you're on a Windows machine, and the projector is sitting on the Desktop, the variable path would return (for example): C:\Documents and Settings\username\Desktop\, which you could then use in any number of ways. (And, for the sake of completeness, that same code when run on a Mac would yield something like Macintosh HD:Users:UserName:Desktop:.) Again, this is a very basic example, but it's one that hopefully illustrates a couple of things. For one, {mdm}Script looks and feels as natural as regular ActionScript does. Intermixing {mdm}Script with ActionScript isn't a back-and-forth proposition, as the syntax and usage is more or less identical. The other thing (which is not readily apparent from the example, but is vitally important nonetheless) is that {mdm}Script 2 (the latest version of the language introduced in Zinc 2.5) is completely synchronous. For those of you who may have just blurted out a "huh?", allow me to explain a bit:

Synchronous execution of code pretty much boils down to code that is "ready" as soon as it's called. In earlier versions of {mdm}Script, many functions were asynchronous, meaning that the example above would have had to be paired with a callback function or run inside of a loop until the variable, for lack of a better term, "existed." In other words, the code didn't run in real time, and you had to jump through some hoops while the code ran and returned what you asked it to. With {mdm}Script 2, there's no waiting—results are available as soon as the code is run. That's the difference between synchronous (good) and asynchronous (not so good), so we're definitely in "good" territory here.

Now, without rambling on even more than I already have, it's probably useful to give you an idea of just how comprehensive {mdm}Script is. I feel a bullet list comin' on:

  • You can connect to databases.
  • You can embed other media (PDFs, Windows Media/QuickTime/Real, Shockwave, or even a Web browser) into your projectors.
  • You can create application menus.
  • You can find out various things about the host system, such as screen size, CPU speed, or the specific version of Windows or MacOS the host is running.
  • You can transfer data via HTTP or FTP.
  • You can manipulate and convert certain image types.
  • You can encrypt and decrypt files.

Of course, I'm just scratching the surface here—as I mentioned, there are literally hundreds of commands to choose from. Sadly, not all commands are cross-platform—not even close. I'd love if Zinc allowed me, for example, to embed a Web browser into my Mac projectors, but alas, that functionality is Windows-only. However, there are some intriguing Mac-only scripts available, such as AppleScript and shell script integration. But the fact remains that you're probably going to want to use some killer feature in your application, only to find that it's not cross-platform functionality. More on that in a minute.

Issues(?)

So now that we've covered how Zinc itself works and discussed the all-important {mdm}Script part of the equation, it's time to talk "gotchas." Fortunately, there aren't many; Zinc does what it's supposed to do (and does it pretty well, I might add). So let's spend our remaining time together today talking about a few broad issues and then going over some of the nits I had.

First and foremost, I was very interested to see how well Zinc-wrapped projectors ran on Windows and Mac systems. I haven't seen a Flash wrapper application yet that didn't yield some drop in frame rate from the "raw" SWF file, and Zinc is no exception. However, Zinc does pretty well in this area, and I'm guessing that the improvements in Flash 8 play no small part here. In my very unscientific tests with some pre-existing Flash content, the results varied. Windows projectors often performed with no negligible drop in frame rate, though depending on content (read: however many pixels I was shoving around at any given time), it wasn't uncommon to see perhaps a 5-10% drop in frame rate over a native Flash projector, while some older (pre-Flash 8), higher frame rate SWF files dropped as much as 20%. (Again, these are extremely unscientific measurements—more of a "gut feeling" than anything else). Mac projectors didn't seems fare as well as their Windows counterparts—I came to expect anywhere from a 10% (minimum) to even a 25% or more reduction in frame rate over native Flash projectors. As an aside, it's worth mentioning that creating Mac projectors from a Windows-based program is extremely easy—Zinc bundles the application into a HQX file, which you then move to a Mac and unpack on that end. But I digress. Overall, Zinc projectors did about as well as Director projectors (Director being my usual Flash wrapper application) with similarly embedded Flash 8 content, so it's safe to say that at least for me, Zinc performs about as well as I had expected. Of course, Flash content varies wildly, so your mileage will definitely vary here.

Another big issue I wanted to check out stems from personal paranoia. You see, some time ago I was using one of Zinc's competitors as my chosen Flash wrapper application, only to find out that the projectors it made wouldn't run on Windows 2000 or XP machines where the user wasn't an Administrator and the latest Flash Player wasn't already installed. Suffice it to say that I religiously check for that scenario now, and there is good news and (a tiny bit of) bad news when it comes to Zinc projectors. The good news is that Zinc creates truly standalone projectors that do not require anything additional to be installed (the caveat there being that if you've used a function that relies on a third party technology, such as QuickTime, all bets are off—you have to make sure your target users have those extras). Zinc projectors also work just fine for users with non-Admin accounts on Windows. The bad news, such as it is, is that depending on your build of Zinc 2.5, you may find that your Zinc projectors tend to "trip up" machines with XP's Data Execution Prevention feature enabled. I couldn't figure out for the life of me why a projector that worked fine in Windows 2000 would flat-out refuse to run on my XP box with DEP enabled. Fortunately, I didn't waste too many brain cycles figuring it out, as I had recently had an encounter with DEP while using another program, so it was one of the first things I thought of. In any event, the most recent build of Zinc that I downloaded (2.5.0.15) fixed this issue, so just make sure you have the latest build.

And now, with the experiments run, here are the issues I found while working with Zinc:

1) To put it bluntly, Zinc likes to "phone home." After querying a MDM rep, I was informed that Zinc does so for a couple of reasons: one, Zinc connects to MDM's servers to check for news and updates. Two, Zinc validates registration, which, if I didn't know any better, sounds eerily like product activation. The good news is that there is an option to turn the annoying notifications "feature" off; the bad news is that there is no way to disable registration checking. Now, it's easy enough to block the connection with the firewall program I use, but once I do Zinc takes up to 25 seconds to become usable after launching the program (at least on my machine) if it doesn't find an Internet connection. I was also told that Zinc shouldn't connect at every launch, but in my experience it tried to. Needless to say, this process is highly irksome, and as I dislike Internet connectivity as a seeming requirement to even run properly (and especially in light of my seething hatred of product activation), Zinc wasn't seriously considered for our highest rating.

2) I've already touched on this issue briefly, but the lack of cross-platform parity with regards to {mdm}Script is somewhat troubling. Don't get me wrong; there are plenty of features that are supported on both the Windows and Mac platforms, but chances are that you'll want to use a function that is limited to one platform, and if that feature is crucial to the success or failure of your application, you'd have to target a single platform. For example, I'm not certain of the technological impediments to the implementation of PDF functionality into Mac projectors, but if I wanted to author an application that included embedded PDFs, I would either have to target the Windows platform only, or enable some workaround (such as document launching) that results in reduced (or at least different) functionality on the Mac (which, I suppose, is better than it not running on Macs at all, but is still not an optimal solution). That said, there are still many cross-platform features that can and do permit very rich applications that will run on multiple platforms; I would just like to see the full feature set supported everywhere Zinc runs (where possible and applicable, of course—I don't expect AppleScript to run on Windows, for example).

3) Initially, I kept running into a "Library not Registered" error message every time I launched Zinc or imported a SWF file. Apparently, it's because I didn't have any Flash 8 ActiveX controls on my system (only Firefox plug-ins), and Zinc (again, apparently) requires access to the host IE ActiveX control to show certain elements during the authoring process. However, Zinc will still work fine, and will still build perfectly functional projectors even if you don't have the ActiveX version of the Flash Player already resident on your system.

4) I really wish that Zinc offered a "grand unified" file format. If you want to create multiple projectors for different platforms, you have to create different Zinc files for the same project. I'd like to see Zinc store different platform information within the same file, which not only would allow for easier projector building, but would also streamline the projector building process for multiple platforms. It's not a huge sticking point, but it would be a "nice to have" option for a future version.

5) Another wish list item: I'd love to see MDM provide a component for the Flash environment that offered debugging from within Flash. As it stands now, you have to write your {mdm}Script trace or debug code, publish your SWF file, switch to Zinc, enable debug mode, build the projector, run the projector, and then see the results. Wouldn't it be great if there were a Zinc component that simulated the Zinc engine, so you could at least run (for example) simple traces on {mdm}Script functions? It would for me, anyway.

6) Lastly, a word of caution rather than a true issue. Zinc is chock full of options, and {mdm}Script is overflowing with functionality, but inevitably, you'll likely find that there's a specific thing you want to do with Zinc that it doesn't have. In my case, I like to "sniff" for certain screen resolutions, and if a user is running at 800x600, I try to have my projectors lose the window chrome and just go full-screen. Director does this, but try as I might, Zinc doesn't seem to have a way of changing the window modes in mid-stream, as it were. It's something I can work around, of course, but the point here is that you'll likely come across something that Zinc can't do amid all the hundreds of things that it can. That's not a damnation of the product by any stretch—I guess what I'm saying is that with all the things that Zinc can do, it may suffer from the high expectation paradox. Don't let it!

The bottom line

I'm getting within spittin' distance of the 4,000 word mark here, and I still feel like I left out 99.9% of Zinc's features—it's just that huge and that comprehensive. Keep in mind that I reviewed the Windows version with the Mac OS X plug-in, so your experience with any of the other flavor of Zinc that MDM offers may be much different than mine. But the long and the short of is that Zinc is a fantastic program that offers tremendous flexibility to Flash designers and developers who are looking to do more with Flash. Zinc has something for just about every Flash user type, from designers and animators to "tweeners" (like me) to hard-core developers looking to create full-blown desktop applications in Flash. It works well, is fairly easy to pick up, and is just an all-around solid product, and as such earns a Strong Buy rating (the connection/activation "feature" being the main reason Zinc was kept from more rarified air). But don't just take my word for it—head over to the MDM web site, grab a trial version, and evaluate it for yourself.

^ Top of Page

Got Feedback? to send an email. I'll do my best to answer. Really.