PDA

View Full Version : Installing Application with unknown plugins



Scott Lindberg
07-19-2006, 10:22 AM
I am currently evaluating InstallShield 12 Professional for a current development project. I have not been able to determine if InstallShield has a way of supporting my application structure. The application we are developing consists of an application framework that supports various plugin modules via checking for interfaces. The initial release will support a single plugin module. The hope is to release additional plugins that will be supported by the application without requiring recompilation of the application code. From an end user perspective, I would like a single installation (single entry point). My initial thought was to have a merge module for each plugin and have the overall installation determine what merge modules are available on the media at runtime, but it seems as though the overall installation needs to know about the merge modules when it is compiled. Has anyone tried to do something similar? It was suggested to do a complete installer for each module and create a script which would search a pre-defined directory for available .msi files or the like and run them subsequent to the initial installation, but I would like something that would be more seamless to the end user.

Christopher Painter
07-19-2006, 10:29 AM
Lets break this into two problems.

1) Application

What you are looking for is a dynamic enumeration of plugins at runtime. As long as certain registry signatures or files exist you'll find your functionality. I've seen .Net apps that do this by recursing through a directory structure with reflection and detecting all of the assemblies that exist with a certain class name to build a list of plug-ins. How you do this is up your application not the installation.

2) Installation

Once the setup team and application team agree on the framework specific above the install merely has to support a application servicing story that incremently installs plugins overtime. This could be a core install followed up by seperate plugin installers over time, or it could be a single installer whose feature tree grows over time to include more plugins. Servicing could be accomplished with major upgrades and plugins could be added or removed using the maintenance UI sequence.

So in summary, yes, InstallShield/MSI can handle this use case.