COM+ applications can be complex to configure and there's no standard way to save that configuration in a form that can be placed under version control. Luckily the COM+ Catalog is accessible by a set of completely scriptable COM objects. These scripts take advantage of this to provide some functionality that should really come as standard.
The two scripts are:
- COM+DumpApp.vbs - Dumps an XML representation of a COM+ application to a file. Includes all of the information needed to recreate the application in the COM+ catalog.
- COM+InstallApp.vbs - Installs or patches COM+ applications from a file containing XML representations of the applications' configuration data.
Scripting the COM+ Catalog
COM+ applications can be complex to configure. This complexity increases as you use more COM+ services. By the time you have an application that consists of several configured components, using multiple roles, and method level security it is almost impossible to easily document the configuration of the application. In an environment where all of your source code is routinely stored in a configuration management system and you can automatically rebuild any version of your application from your source tree, having to then manually reconfigure your COM+ application from scribbled notes and memories is simply not an option.
The COM+ Catalog is manipulated by the COM+ Admin COM objects. These allow you to do anything that can be done using the COM+ Explorer programmatically. The interfaces are very general, dealing in COM+ catalog collections which contain COM+ catalog objects, which in turn have name/value properties. These interfaces can be used to access the entire configuration of your COM+ application, store it externally to the COM+ catalog and then rebuild your application from it.
The scripts available from these pages make it possible to save your COM+ application's configuration as an XML document, place it under version control with the rest of your source code and then recreate your COM+ application from it at a later date.
You can save multiple applications into a single XML document, the result of saving the three COM+ applications that form part of IIS can be seen here.
Patching for different environments
Some configuration settings may be specific to a particular environment in which you you wish to run your application. For example, the ConstructorString property of an object may be different if you're running your application on a development server rather than a production server. The scripts allow you to save complete applications and also application patches. A patch is simply a subset of the XML required to create the entire application, it can be as many or as few settings as you like and can be applied after the main application has been recreated to allow you to tailor the application for a particular environment. At present you have to create the patch files manually using a tool like the XML notepad. An application patch element is different only in that the element name is ApplicationPatch rather than Application and it has a Patch attribute that is used to allow a file to contain different patches for the same application. An example can be found here.
Run each script without any parameters for a help screen listing available options.
- 11th June 2000 - Initial revision release on http://www.jetbyte.com web site.
- 12th June 2000 - A few bug fixes.
- 15th June 2000 - Bug fix: save component properties before configuring component, interface and method roles. If the "ComponentAccessChecksEnabled" property isn't set to true and the component saved before configuring roles then the role configuration is silently ignored.
- 29th June 2000 - New functionality. You can now create patch files that include a prompt and a default value. If a prompt is present then a dialog box is displayed and the user is prompted for the value that will be patched - useful for password requests, etc. You can also add a prompt to each application and application patch so that the user can be given some information about what they're installing.
Len has been programming for over 30 years, having first started with a Sinclair ZX-80
. Now he runs his own consulting company, JetByte Limited
and has a technical blog here
JetByte provides contract programming and consultancy services. We can provide experience in COM, Corba, C++, Windows NT and UNIX. Our speciality is the design and implementation of systems but we are happy to work with you throughout the entire project life-cycle. We are happy to quote for fixed price work, or, if required, can work for an hourly rate.
We are based in London, England, but, thanks to the Internet, we can work 'virtually' anywhere...
Please note that many of the articles here may have updated code available on Len's blog
and that the IOCP socket server framework is also available in a licensed, much improved and fully supported version, see here