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.
Daniel
Avi Bryant avi@beta4.com wrote:
On Tue, 29 Oct 2002 goran.hultgren@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]