site_archiver@lists.apple.com Delivered-To: installer-dev@lists.apple.com So you can experiment and figure it out. "Good times"? Well, sorta. It was a kind of high point of hackery. Hope this helps, in some way. _______________________________________________ Do not post admin requests to the list. They will be ignored. Installer-dev mailing list (Installer-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/installer-dev/site_archiver%40lists.a... On Nov 7, 2008, at 8:13 PM, Matt Slot wrote: On Nov 7, 2008, at 6:20 PM, Bill Coderre wrote: There's one exception: if I were installing iLife, and I have in my installer QuickTime 7.x, and the user has 7.x already, I would NOT reinstall it, because by doing so, I'd force the user to restart. Yeah, that's our problem. We're installing a kext that's used by several of our products, but we don't want to impose on the user if he's already up to date. Unfortunately, and I should have stated this in my original request, this installer must still support 10.3 so a distribution script isn't feasible. OK, in 10.3, in an mpkg, in the Info.plist, you have a IFPkgFlagPackageList. This list specifies which packages are to be installed, and whether they are required (forced to be installed), selected (pre-checked, but user can uncheck), or optional (unchecked, but user can check). There's also a IFPkgFlagComponentDirectory that specifies where to find the packages. Each package then can have its own InstallationCheck and VolumeCheck to decide whether to install. The Installation error code returned has an error number from 16 to 31, and then bits 5 and 6 of the error determine whether the error should abort install, skip this package, issue a warning, or do nothing. One bit causes the error to be displayed, the other causes the error to stop installation. Can't remember which is which. Now, if you switch to custom install, you'll see lots of packages. You can hide all of them by putting <key>IFPkgHideSubpackages</key> <true/> in your mpkg, but if you want to hide only some of them, have the outer mpkg refer to an inner mpkg and have that inner mpkg set the flag. Yes, these flags are pretty limiting. A required package that returns an error probably aborts the whole install. Sorry. And not having a dynamic way of turning packages on or off, that kinda sucks, too. I solved these problems for iLife 05 by using a springboard app. I had a tiny app that, when double-clicked, evaluated some rules (a perl script) and then launched the "correct" mpkg to cause the correct set of packages to install (the perl code used system() to call /usr/bin/ open on the correct mpkg. As I recall, we had iLife shipped with or without QuickTime being installed, and different packages depending on whether they had a superdrive (DVD-writer) in their computer. This email sent to site_archiver@lists.apple.com