That's the main problem I'd like to solve by having install be one
registered service of many that can handle packages. The design would
allow the user to choose the tool he wants, and have many installers
active for the same package.
Avi Bryant <avi(a)beta4.com> wrote:
> On Tue, 29 Oct 2002 goran.hultgren(a)bluefish.se wrote:
> > > (I don't necessarily recommend updating through SqueakMap, though - better
> > > would be to file it in clean to a new image. Need to get that
> > > SMDVSInstaller going...)
> > Exactly! :-)
> Looking at that again, I remembered what my other problem was with
> #canInstall:, that I forgot to mention in my last post - since DVS files
> are just .st, they get snapped up by the default installer before the DVS
> installer ever gets a chance...
> What I've done before in similar situations is to do a leaf-first search,
> so that subclassing an existing installer (and adding narrower criteria)
> is feasible.
> I propose the following change to SMInstaller class:
> classForPackage: aPackage
> "Find the most specialized subclass that wants to handle the package."
> self subclasses do:
> [:ea |
> (ea classForPackage: aPackage)
> ifNotNilDo: [:class | ^ class]].
> ^ (self canInstall: aPackage) ifTrue: [self]