SharePoint Solution Downloader

One of my pain points as a SharePoint “administrator” is having to deal with deployments of solution packages to my environment without the best change management. This means that I often see packages making their way in to the environment without any thought given to keeping the package in case it needs to be reapplied at a later time (Note: I’m not the only one who controls what goes into the environment).

The solution? I whipped up a Windows application so download one, several, or all of the solution packages currently stored in the farm configuration database.

I have posted the application to CodePlex @ http://spsolutiondownloader.codeplex.com/.

SharePoint Solution Downloader

The application must be run in the context of a Farm Administrator (i.e. right-click, Run As…) on a server in the farm for which you wish to download the solution package(s) from and requires the .NET Framework 3.5.

I would love some feedback from the community as to whether or not this useful. I have some other little apps in mind I could put together with the proper motivation.

Exception: The content type is in use

I’ve found that working with InfoPath is becoming more and more of a chore.  A form I’ve been working on has had its promoted columns changed a number of times (Side note: I would just love to have a defined specification).

Today when I attempted to completely retract my form (inlcuding manually deleting the content type associated with the form), I was presented with the always helpful error “The content type is in use“.  This is by far one of the more helpful errors you will ever see from SharePoint.  Unfortunately it isn’t clear how to discover where the content type is actually in use.  A quick trip to the content database for the site collection you are working in can show us:

DECLARE @ContentTypeName nvarchar(128)

SET @ContentTypeName='Content Type Name Here'

SELECT w.Title AS [Web Site], w.FullUrl AS [Web Url], al.tp_Title AS [List Title],
	ct2.*
FROM ContentTypes ct1
	JOIN ContentTypes ct2 ON LEFT(ct2.ContentTypeId, Len(ct1.ContentTypeId))=ct1.ContentTypeId
	LEFT OUTER JOIN dbo.ContentTypeUsage ctu ON LEFT(ctu.ContentTypeId, Len(ct2.ContentTypeId)) = ct2.ContentTypeId
	LEFT OUTER JOIN dbo.AllLists al ON ctu.ListId = al.tp_Id AND ctu.WebId=al.tp_WebId
	LEFT OUTER JOIN dbo.Webs w ON al.tp_WebId = w.Id WHERE ct1.ResourceDir=@ContentTypeName

[Credit to Curtis Ruppe]

Once we know where the content type is in use, deleting it through the GUI is a trivial matter.

MSDN Magazine: 10 Best Practices For Building SharePoint Solutions

MSDN Magazine has a SharePoint focused article this month titled 10 Best Practices For Building SharePoint Solutions. If you’re trying to wrap your head around the scope and depth of developing solutions on top of SharePoint, the article makes for a good primer.

InfoPath Custom Initiation Form “stuck” on “Installing”

When developing custom InfoPath initiation forms for my workflows, I sometimes forget a crucial step when publishing the forms. If you enter an alternate location when publishing your form, the form state will become stuck on “Installing”.

The moral of the story? When publishing a custom initiation form, be sure to leave the “Alternate” publishing location empty.

Performance Optimization WordPress Plugins by W3 EDGE