How to Enhance iShell’s QuickTime “Sniffer”
Turning the awkward into the slightly less awkward
Even as fun as it is to learn and use, the whole delicious iShell enchilada tends to leave a touch of the acid reflux when it comes time to create your final CD-ready project. Unlike Director, which packages runtime files up into neat little projectors and protected casts and Shockwave files, getting all the junk together that iShell needs to present self-contained projects away from the cozy nest of your development box is a slightly messier process. While I'm not going to go into tremendous detail about general iShell runtime prep in this tutorial (the iShell Launcher documentation does a fine enough job of walking you through it), I am going to pass along a trick for using the iShell Launcher's QuickTime "sniffer" for purposes other than for which it was originally designed.
The Issue
The iShell Launcher exists solely to ensure that your users have the version of QuickTime on their respective machines that they're supposed to, and then does one of two things:
- QuickTime is a) present and b) the right version, so it launches the iShell Runtime application and your multimedia masterpiece plays without a hitch.
- QuickTime is either a) not present or b) present but an older version, so the Launcher looks for the appropriate QuickTime installer to launch for whichever supported OS your user is running.
This approach works just fine, provided you actually want to go through the rigamarole of licensing the QuickTime installers from Apple and adhering to their arbitrary rules that concern distribution of the various players. I, for one, don't really feel like sending in quarterly usage reports with units shipped and usage stats (not to mention the blood sample and rights to my first-born) to Apple as required in their licensing agreement, so I set out to find a way to launch something else in place of the QuickTime installer. Say, a small program which tells the user that they need to get an updated version of QuickTime, offers them a link to the QuickTime site to download it, as well as a "Try Again" button that restarts the Launcher once QuickTime is done installing. Sound good? Of course it sounds good, but can it be done?
Yes, it can be done
So much for suspense. The secret here is that you can actually launch any type of file you want as an alternative to QuickTime being present, not just QuickTime installers. With that in mind, the idea is to give iShell "fake names" instead of actual QuickTime installers in the master project file (the .xp document iShell automatically creates when you make a new project). But in order to have access to these fields, you have to install a script file included with the iShell Launcher. Let's do this now.
When you unzip/unstuff the Laucher archive, you get a series of folders like those shown in Figure 1. The one we care about at the moment is iShell Module. In there, you'll find another folder, helpfully titled Put in Scripts, which contains the file we want: Launcher.km. This script is identical for the Mac OS and for Windows, incidentally, so don't worry whether you have the right platform-specific version. Copy this file into your iShell application directory (make sure to close iShell first if it's running), placing it in the Scripts folder located in the Modules directory. Restart iShell, either make a new project or open an existing project, and then double-click the project's .xp file to examine it. If all has gone well, you now have a set of Launcher settings in addition to the Window, URL, Info, and QuickTime settings you're probably very used to by now (fig. 2).

Figure 1: Here's all the junk in the Launcher folder once you unzip or unstuff it.

Figure 2: Adding the Launcher script to the iShell Scripts directory gives you access to these QuickTime version fields.
Mucking with the Launcher settings
Taking a look at the Launcher settings, it's pretty clear that there ain't much going on here. It's just a few fields that embed QuickTime version information and the names of the respective installers for the various platforms iShell runs on into your project. For the sake of this tutorial, I'm going to enter the following settings into the Launcher fields:

Figure 3: The settings I'm using for this project.
In this case, I actually want the QuickTime installer option to trigger on Launcher startup, so I purposely entered a version number that QuickTime isn't likely to reach anytime soon. If I wanted to do a "real" check for a QuickTime version, the decimal places do matter (6.0, 5.0, etc.) for the Launcher to work properly. In the Installer Name fields, I've put QT as the name for the various Mac installers, and QT.exe for the Windows installer.
A note of caution here for Mac OS X users. You may want to do a Get Info (Command+I) on the program you're pointing to here and twirl down the Name and Extension arrow to make sure the program in question doesn't have a hidden ".app" extension (fig. 4). If it does, make sure to include it in the Mac OS 10.0 and 10.2 fields, or else the Launcher may choke on the request. Since I'm using a Flash executable, and Flash doesn't include the ".app" extension when it makes a Carbonized executable on OS X, all of my Mac Launcher fields, 9 or X, can say the same thing.

Figure 4: Make sure to check whether there's a hidden ".app" extension in Mac OS X, and, if so, include it in your .xp file in iShell.
So what's really going on here? When the Launcher is activated, it's going to check for QuickTime 107, and, not finding it, it will then look for whatever alternative file you've told it to use in the runtime's Data folder. In my case, I've created a Flash executable that kindly informs the user that QuickTime 6 (the most current "real" version, as of this writing) is not installed, and offers links to the QuickTime web site and also to re-try the Launcher (fig. 5).

Figure 5: The enhanced "sniffer," which has correctly run from the iShell Launcher.
Other nefarious uses
Now remember, this trick will work with any file type, not just program files. So you could put something as simple as a Read Me text file or as complex as a civilization-wrecking worm distribution system in place of the QuickTime installer. The long and short of it is that you're not stuck with just using the various QuickTime installers as a fallback, which opens up a whole lot of possibilities as far as runtime customization goes. Just try to use your newfound iShell power for good, and not for evil.
Got Feedback? to send an email. I'll do my best to answer. Really.
