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


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.


The Custom Action library can be downloaded here

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


  • 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 (

    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  

  • I may be completely missing something, but how do you invoke the custom dialogs to add your receive ports, and et al.?


    By Blogger Craig Johnson, at 10:01 PM  

  • Hi Martijn,

    I want to include one vbscript with my BTSInstall ,and my script must receive parameters to run. I added my script to CustomerAction/Install ,but don't know how to give parameters for it.
    Please tell me how can I do.

    Thanks in advance

    By Blogger pcl, at 6:51 AM  

  • 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 ?



    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.


    By Anonymous Ren, 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?


    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.



    By Anonymous Anonymous, at 8:58 AM  

  • Technology has spanned the life of human making it near to impossible without it. Online shopping has pleased us with wonder of ecommerce and credit goes to the perfect ecommerce solution that can create an option for an easy shopping store for you. Click and get! How easy!

    By Anonymous Ecomerce solution, at 12:34 PM  

  • If you are looking out for apt ecommerce solution to spruce up your online business,then the offshore software outsourcing company Infysolutions is the ideal destination foryou. The url provides the details on specific ecommerce solutions that you can avail of to expand and boost up your online business.

    By Anonymous ecommercewebmaster, at 10:29 AM  

  • The game has a lot of LOTRO Gold, as long as you join to play this game you will get
    them. you should try your best to earn as much Lord Of The Rings Gold as you can, so you are strong and no one can
    fight you. you can go to buy LOTRO Gold in the game, so many other players want to play with you together. As long as you have the cheap Lord Of The Rings Gold you will be strong and you can go to kill the monsters to upgrade alone.

    By Anonymous Anonymous, at 1:27 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  

  • Thanks for the posts we are the professional web design and development company offering an array of services like template customization,web designing, CMS solutions, eCommerce solutions, Search engine optimization and Internet marketing.
    eCommerce Solutions

    By Anonymous eCommerce sollutions, at 7:11 PM  

  • Thanks for the information, we will add this story to our blog, as we have a audience in this sector that loves reading like this” ecommerce solutions

    By Blogger fundoo, at 8:33 PM  

Post a Comment

Links to this post:

Create a Link

<< Home