Re: Installing same version twice
Re: Installing same version twice
- Subject: Re: Installing same version twice
- From: Bill Coderre <email@hidden>
- Date: Fri, 07 Nov 2008 21:29:23 -0800
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.
So you can experiment and figure it out.
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.
"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 (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden