Martijn's blog - E-Commerce, EAI, BizTalk and .NET

2004/10/03

BizTalkInstaller: a BTSICustomAction replacement

In developing with BizTalk, I've had clients needing simple to use MSI packages instead of "complex" NAnt scripts. Creating MSI packages to deploy a BizTalk solution is fairly simple, but using the BTSICustomAction to deploy the contained assemblies and bindings is somewhat of a less trivial task.

The issues my clients encountered when using MSI packages created using BTSICustomAction are:
  • Inability to edit binding files before actual deployment, hence needing multiple MSI packages for each server configuration

  • Not all assemblies are removed when uninstalling, due to these assemblies being either used by active/suspended instances of Orchestrations or having bindings with Orchestrations not in unenlisted state.

  • No feedback within the MSI packages about the deployment of the contained components. Having to manually iterate through all logfiles created.

Acting on this information, I've decided to create a replacement Custom Action library, which allows users to edit bindings before deploying them, asks whether or not to kill running Orchestrations upon uninstall to ensure proper removal of affected assemblies and provides feedback about what went on during deployment/removal.

The Custom Action I've created is used in exactly the same manner the BTSICustomAction is used, it takes a parameter DEPLOY, which, when set to true tells the BizTalkInstaller class to actually deploy (install the assemblies and run the binding files) the components. If the parameter is missing or not set to "true", contained assemblies are installed into the GAC, but no binding files are executed.

Also, when uninstalling, all files installed without DEPLOY=true will still be checked for any bindings which might keep them from being removed.

Using the component is easy:
  1. Create a new "Setup Project"

  2. Add your components to the project

  3. Add your exported bindings to the project

  4. Add the custom action BizTalkInstaller to each section in the Custom Action Editor, setting "CustomActionData" within the Install section to "/DEPLOY=true" if you want bindings to be executed, or nothing if you don't want that.

At this stage, you're actually ready to build the Setup Project and deploy it. BTSICustomAction forced you to include two extra files within the Setup Project:
  • btstd.xml (contains the standard BizTalk assembly list)

  • BindingSchema.xsd (contains the schema information for binding files)
I've added those two files to the BizTalkInstaller as Embedded Resource, so there's no need to include those files in your Setup Project. You, however, still need to include BTSIAssemblyOrder.dll in your Setup Project.

Note: altering binding files before deployment should be used with caution, as you have full control of each aspect of the binding file.

UPDATED: NEW DOWNLOAD LOCATION

The Custom Action library can be downloaded here

As always, full sourcecode is included and feedback is very welcomed!

10 Comments:

  • Very nice. I had a similar idea but also to add extra MSI windows to configure/update the locations in the bindings xml and also to call an adapter to validate a location upon changing.
    Best regards,
    Gregory (Gregory@eai.be)

    By Anonymous Anonymous, at 11:33 AM  

  • It was cool stuff what most people are looking for. Can you include the assembly and file to be excluded in the Setup project when we add the BizTalkInstaller. Because lot of them are BizTalk assembly(Out of box).

    By Anonymous Anonymous, at 5:07 PM  

  • This comment has been removed by a blog administrator.

    By Blogger Chris Tucker, at 7:58 PM  

  • Excelent tool. I am haveing a problem though, my assemblies are not being added to the GAC. Looking into the source it apears that it only does this if DEPLOY=true is not set. Hmmm..

    By Blogger Chris Tucker, at 8:04 PM  

  • I would like to change the Primary Transport adress in a send port, but the fiels is disable.
    Do I Have to modify the bindingschema ?

    Thanks.

    Catherine.

    By Anonymous Anonymous, at 11:34 AM  

  • Hi Martijn,

    I have modified your code and found more useful can publish this changes on the net if you allow.

    Regards,
    Ren

    By Anonymous Anonymous, at 3:08 PM  

  • Hi martijn,

    can your repost the BiztalkInsaller. I am unable to
    locate the donwload.

    Do you know of an MSI BiztalkInstaller that will prompt
    for the send/receive ports defined in the bindings file?

    Thanks,
    Mike

    By Anonymous Anonymous, at 5:13 PM  

  • Hi martijn,

    can your repost the BiztalkInstall. I am unable to
    locate the download.

    By Anonymous Anonymous, at 7:29 PM  

  • Hey Martijn,

    It'd be much appreciated if you could repost the code for this component.

    Cheers,

    Keith

    By Anonymous Anonymous, at 8:58 AM  

  • Won't you wonder if somebody says he doesn't know what is a software company ? Am sure you will fall off from your chair. But believe me it is true. There still are people in third world countries who don’t know anything about software development, web application development or internet. So those who are not really aware about these buzzing things, try to find out what is a tech-world of Internet.

    By Anonymous Anonymous, at 5:56 PM  

Post a Comment

<< Home