Tech Musings

Saturday, July 15, 2006

Producing Hybrid CD-ROMs

Well, I've learned quite a bit over the past two days about OS X, Toast and creating cross platform data CDs. I thought I was fairly well-versed in this process as I've created hybrid Mac and PC CDs various times in the past without much trouble, even before the days of OS X and "platform friendly" files. However, I was thrown a curveball this time because I wanted to take it a step further and enhance the Finder windows on the OS X side of the partition by implementing customized icon sizes, label colors AND background pictures. This proved to be a bit more problematic than I had anticipated.

To be clear, I kicked off my project with Toast 5.x, which turned out to be a huge mistake. It would have saved me a lot of work and research had I upgraded to Toast Titanium version 7 before starting my burn project.

In the past, I've only needed the use of the built-in CD Burner software (straight OS X data) or Toast (hybrid) to burn data CDs. However, this time I discovered the power of OS X's Disk Utility, which was the key element to properly prepare fully customized Finder windows on my CD. You need to use Disk Utility to burn a CD with pre-defined window settings... CD Burner and Toast are, unfortunately, not "up to snuff" in this area (although Toast 7 is much better than Toast 5).

The rub, of course is the hidden .DS_Store file. To maintain settings for customized windows, this file needs to be set and locked into the disk image. You achive this by burning the CD directly from a disk image file using the Disk Utility program; neither CD Burner or Toast 5.x work the way you'd expect because they screw with the .DS_Store file right before "burn time," much to everyone's chagrin.

This discussion was key in helping me understand what I was doing wrong.

Here is what I finally did to create my customized hybrid CD using Toast 7 and disk utility:

1. With Disk Utility, create a new blank image somewhere on your hard drive. It should be read/write and sized large enough to contain all your files (I customized the size to 250MB).

2. Mount the image and drag all your files into the mounted volume including the picture(s) you plan to use as your window backgrounds.

3. Set the folder view(s) (Cmd+J~ remember to check the button "this window only") the way you want them, making sure to select the background image()s directly from the mounted volume.

4. Next, hide the background images using the SetFile command in the Terminal: /Developer/Tools/SetFile -a V /Volumes/mountedvolume/picture-1.jpg (assuming Developer Tools is installed). However, if you use Toast 7 there is a tick you can check at burn time in the GUI to make files invisible, alleviating the need to do this through the Terminal.

5. Unmount the Volume, then remount and unmount again. I'm not sure if this is absolutely necessary, but I did it a few times to make sure the settings in my .DS_Store file stuck properly.

6. Use Disk Utility to burn a CD directly from the .dmg file. DON'T mount the bloody thing! If you do, the background images might not show up in the final version. It seems like the .DS_Store file always gets screwed up at "burn time" unless you burn the .dmg image directly to a CD WITHOUT mounting it.

7. This worked well, but I also needed the CD to open on Windows. I tried but it didn't open on my PC. Apparently Disk Utility only formats CDs as +HFS which can't be read on the PC. So, enter Toast again to make my hybrid.

In the end, I actually used both a QueFire external CD-RW burner as well as my internal Pioneer DVD-RW to get the job done. I placed the aforementioned CD in the QueFire as the reader, opened Toast 7 and chose the files from the CD as my target and then outputted to another CD using the internal recorder. I was orignially trying to do this with version Toast 5, but kept receiving an I/O Error with both CD drives connected. I also tried using JUST the internal burner, but Toast 5 kept complaining and wouldn't copy the CD source into cache, etc. Nightmare.

Again, the trick is that the .DS_Store file cannot be replaced by OS X at "burn time." So, with Toast 7 I chose the CD as the source, ticked the files I wanted to make invisible and unchecked files I didn't want to show up on the PC side. No problem. Also, if you want the disk to automatically open, check the "Auto-open" option (not available in Toast 5.x!) in Toast 7. OS X no longer supports the old Auto Run "auto-run" option, but auto open works like a champ!

Toast 5 also doesn't provide you with the ability to make files invisible or check the "Auto-open" option. In hindsight, I guess I could have made it work with Toast 5 by copying everything from the CD including the .DS_Store file into a disk new image, locked it down as read only so the .DS_Store file wouldn't be replaced by OS X at "burn time", mounted it and then selected the mounted disk image as the source before burning. This seems ridiculously over managed in my opinion. Toast (5 and 7) should be able to read a .dmg as a source WITHOUT having to mount it as a volume (like Disk Utility does).

In conclusion, I'm annoyed that I had to use both Toast AND Disk Utility to get this job done because 1) Disk Utility doesn't give me the ability to create a hybrid CD, and 2) Toast doesn't read an unmounted .dmg image as the source files for my CD. I feel it is ridiculous that I need both of these programs to accomplish what I set out to do.

Last note: If you're having trouble creating your hybrid with Toast 5.x, do yourself the favor and upgrade to Toast 7 and save yourself a headache!!

UPDATE 7/1/07
It might be desirable to create a mac disk image (.dmg) that automatically opens after it mounts on the desktop. Unfortunately, Disk Utility does not currently provide you with this option when creating disk images. However, you can do it with Toast AND Disk Utility. First, set up your initial image with Disk Utility (steps 1-5 above), open Toast 7 and choose Utilities > Mount Disc Image. Be sure to confirm the "Auto-open disk window" checkbox is checked. Then, return to Disk Utility, select the corresponding root-level (i.e. top) CD icon in the left pane and choose File > New > Disk Image from disk3... (or applicable) and create ANOTHER disk image. The second .dmg will now automatically open after double clicking on it!