SharePoint Custom Solution Deployment Practices Review

Ivan PadabedDirector, Platform Architecture
There is one common problem that all we SharePoint developers share: custom solution deployment.

This topic can't be covered fully in this short article, so all I want to do in this one is to review it from a development-to-operations perspective.

This is the problem statement:
You have your SharePoint solution developed and ready to be delivered to the production environment (I'm intentionally skipping all the QA steps here). All you have is one or more WSPs (as you may know, WSP is a CAB-based package containing solution files and XML manifest with instructions to SharePoint how to deploy solution files) and some features of different scope inside. But in my experience, this is not enough to get your solution deployed even on a test environment.

Most of us, old-school SharePoint developers, used to write STSADM-based batch files to automatically deploy, install and activate; but this approach is not very convenient: no logging, no UI, and too much preconditions to have it successfully completed.

Almost the same experience is regarding PowerShell. Please note that I'm referring only deployment automation aspects of using PowerShell. No doubt that PowerShell is a great tool for a lot of IT tasks, but it gives almost the same user experience when used for SP deployment automation.

The next approach is usually to write a proprietary tool to take care of deployment.  If used for many different solutions, such a tool could become universal but in most cases this is a "dead end". There are better alternatives such as open source installers.  

Let's take a look there.


pretty old and simple solutions installer, but still can save you some time


for people who use TFS 2008 with MOSS 2007. Not so popular combination for these days. Could be useful for QA deployment automation but still no help with final solution deployment on production environment


Nice looking but not useful. All solutions have to be already published on the web to be enlisted so this tool just not enough to cover full deployment cycle


last but not least, my favorite codeplex project ever is fabulous SPInstaller! It is customizable through XML-based configuration, extensible via external C# commands, supporting branding and license attachment and has many more features.  Actually, the latest version, which has all the best features, was never officially released due to project coordinator disappearance. But, you still can download the v2 beta version with all the stuff. More useful updates yet to come, this open source project will not die, it is just too good for it!
But all these deployment tools are just an intermediate solution. The next thing we are doing here is WIX-based component, which is allowing the SharePoint solution deployment to be integrated with any Windows Installer package. This could be extremely useful when you want to deploy your SharePoint solution as part of a bigger product with a single package.

Let's summarize:
STSADM-based scripts - easy to do basic automation, not worth investments for advanced scenarios
PowerShell-based scripts - more options for basic automation, but still not enough for advanced scenarios and not easy to support
Open-source installers (especially SharePointInstaller) - perfect tool for pure SharePoint deployment, please note you need to use not-yet-released v2 to get full feature set and sp2010 support
Next step - WIX-based component to use a power of Windows Installer. Optionally - 3rd-party installation package component (InstallShield, Wise etc). But for now no such component even with a minimal deployment features exists.

I can respond to brief comments about the ideas expressed above, but if you want help with a particular SharePoint problem or issue, it would be best to post a question in EE's MS SharePoint Zone.
Ivan PadabedDirector, Platform Architecture

Comments (0)

Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.