Disabling the Silverlight Prompt in SharePoint 2010

Don’t take the title of this post the wrong way.  I think Silverlight is a wonderful addition to SharePoint 2010 Foundation and Server.  After all, who would suggest that they really prefer the traditional user interface in screenshot 1 below, where the top half of the screen is taken up by instructions and a prompt to load Silverlight, over the Silverlight dialog interface in screenshot 2.  Unfortunately, silverlight requires that a plugin be installed on each user’s workstation and in some environments that is either problematic or forbidden by corporate policy.  This post will explore one option for solving that problem.

NoSilverlight

Screenshot1: No Silverlight

Silverlight

Screenshot2: Silverlight

I’ve been working recently on building an external facing SharePoint site for a client.  When we made the site available for internal users to test it we got reports back complaining about being prompted to install the Silverlight plugin.  Some of our testers either didn’t want to install Silverlight, or were on locked down workstations where they couldn’t install Silverlight.  Unfortunately, if they didn’t install Silverlight they kept getting the nag prompt to install it every time they did something that required Silverlight.  The client wanted a way to permanently remove the nag prompt so none of the external users were ever asked to install Silverlight.  If they already had Silverlight installed that was fine, but this web site should never prompt them to do the install.

In looking for a way to disable the prompt I found that the SPWebApplication object in SharePoint contains a property called AllowSilverlightPrompt.  When this property is set to false users will not be prompted to load Silverlight if it isn’t already installed.  This setting isn’t surfaced anywhere in Central Administration that I was able to discover.  I also found that trying to set it from a Web Part or _layouts application page required raising the privileges of the impersonated user changing the setting.  So in the end I decided to write some short PowerShell scripts that would handle changing the setting.  I wrote both a script to display the current setting and one to change the setting.  Let’s look at the simple Get-SilverlightSetting.ps1 script first.

   1: $webapp= $args[0]

   2: if ($webapp){$wa =  [microsoft.sharepoint.administration.spwebapplication]::lookup("$webapp")

   3: if($wa){

   4:     $switch = $wa.allowsilverlightprompt

   5:     if ($switch){

   6:         write-host "`nSilverlight Prompt " -nonewline;

   7:         write-host "Enabled" -foregroundcolor red -nonewline;

   8:         write-host " on $wa `n";}

   9:     else{

  10:         write-host "`nSilverlight Prompt " -nonewline;

  11:         write-host "Disabled" -foregroundcolor red -nonewline;

  12:         write-host " on $wa `n";}

  13: }else{

  14:     write-host "`nInvalid URL"; 

  15:     write-host "usage: get-silverlightsetting WebApplicationURL `n"}

  16: }else{

  17:     write-host "`nusage: get-silverlightsetting WebApplicationURL `n"}

This script checks in line 2 to see if you have passed a URL for a web application as a commandline parameter and prints out usage information in line 17 if you didn’t.  Line 2 then uses the URL to find a specific SPWebApplication object.  If it can’t find one then it prints out an error message and usage information in lines 14-15.  If the web application is found it uses lines 6-8 to print that its enavled if the allowSilverlightPrompt is True.  Otherwise it uses lines 10-12 to print that its disabled.  This script just displays the current setting and makes no changes.   (Note: the `n used in the write-host lines is an escaped newline character used in the script to format the output.)

Now let’s look at the Set-SilverlightSetting.ps1 script used to turn the silverlight prompt on or off.

   1: $webapp= $args[0]

   2: $switch = $args[1]

   3: if ($webapp){

   4:     $wa =  [microsoft.sharepoint.administration.spwebapplication]::lookup("$webapp");

   5:     if($wa){

   6:         if ($switch -eq $true){

   7:             $wa.allowsilverlightprompt = $switch;$wa.update()}

   8:         elseif ($switch -eq $false){

   9:             $wa.allowsilverlightprompt = $switch;$wa.update()}

  10:         else{

  11:             write-host "`nMissing Switch";

  12:             write-host "usage: set-silverlightsetting WebApplicationURL `$True|`$False`n"}

  13:     }else{

  14:         write-host "`nInvalid URL"; 

  15:         write-host "usage: set-silverlightsetting WebApplicationURL `$True|`$False`n"}

  16: }else{

  17:     write-host "`nusage: set-silverlightsetting WebApplicationURL `$True|`$False `n"}

This script is similar to the last one, but in line 2 it collects an extra commandline parameter representing whether the prompt should be turned on or off.  If it finds the web application it uses the parameter supplied to turn the prompt on in line 7 or off in line 9.  If the prompt is invalid an error message is printed using lines 11-12.   To use the scripts simply open the SharePoint 2010 Managment Shell (be sure to remember to use run as Administrator when opening the shell) and run the following command line from wherever you have the scripts.

.\Set-SilverlightSetting http://siteaddress $False

That will turn off the Silverlight prompt for all the sites on that Web Application.  Once you’ve done that screenshot #1 from above will look like this:

AfterSilverlight

I know it’s not a huge change, but it does remove the annoying yellow bar that makes it look like there is something wrong with your site if you don’t have Silverlight installed.  I hope that helps for all of you who work with SharePoint where Silverlight can’t be installed. 

For the rest of us….

I suggest you just install Silverlight and enjoy the newer interface.

June SharePoint Q&A with MVP Experts

MVP_FullColor_ForScreenDo you have tough technical questions regarding SharePoint for which you’re seeking answers? Do you want to tap into the deep knowledge of the talented Microsoft Most Valuable Professionals? Then join me and other SharePoint MVPs for answers to your questions in a live forum. So please join us and bring on the questions! These chats will cover WSS, MOSS and SharePoint 2010. Topics include setup and administration, design, development and general questions. This month there is only one time slot for the chat.  I’ll be there so bring your questions to the chat on Wednesday June 23rd.  Other MVPs who will also be attending include:

    • Amanda Perran (Canada)
    • Ben Curry
    • Bryan Phillips
    • Dan Attis
    • Daniel Larson
    • Jason Medero
    • Mike Oryszak
    • Muhanad Omar (Jordan)
    • Paul Schaeflein
    • Randy Drisgill
    • Rob Foster
    • Saifullah Shafiq Ahmed (Pakistan)
    • Serge Tremblay (Canada)
    • Shane Perran (Canada)
    • Spencer Harbar (UK)
    • Woody Windischman

Wed, June 23rd, 2010

Noon EDT (9am PDT)

Join the chat room on the day of the chat:

URL: http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx

Twitter hastag:  #spmvpchat

Facebook Event:  http://www.facebook.com/#!/event.php?eid=125885194117000

SharePoint Team Blog post:  http://blogs.msdn.com/b/sharepoint/archive/2010/06/17/live-chats-to-learn-more-about-sharepoint-with-the-mvp-experts.aspx

Using Managed Metadata in a Blank Site

A question came up in last night’s MVP Experts chat about a problem using the Enterprise Metadata and Keywords Settings in a Blank site.  We suggested various solutions like not having a Managed Metadata service application configured or the fact that the Enterprise Keywords column is not available for Metadata based navigation.  But the questioner said that his problem was that the link didn’t appear in his document library settings page like it should. For a while that had all of the MVPs stumped because none of us had seen a site that didn’t contain the setting.  I quickly created a new site based on the Blank Site template in my test image and as I expected the link was there.  So I told the questioner that we were all stumped on what might be causing the his problem. 

The Enterprise Metadata and Keywords Settings link contains two checkboxes.  The first adds a Managed Metadata column called Enterprise Keywords to the document library.  The second adds Enterprise Keywords and other Managed Metadata to your My Site profile.  You can see the two links in the screenshot below.

EnterpriseKeywords

The questioner came back later to say that he had found a solution to his problem by activating a hidden Feature that he found in some Blog posts.  The Feature ID he used was “73EF14B1-13A9-416b-A9B5-ECECA2B0604C”.  I was happy that he found his solution, but decided that some further investigation was warranted to figure out what was happening and why?

It turns out that the Feature he was activating is Site scoped Feature called TaxonomyFieldAdded.  The Feature adds two links called Term store management and Content type publishing to the Site Settings page.  It also adds the Enterprise Metadata and Keywords Settings link to the Library Settings page.  There is also a Feature receiver assembly defined to handle events when the feature is installed, activated, deactivated, or uninstalled.  This Feature adds support for Managed metadata field support to an entire site collection.  But since the feature is hidden it leaves us with several questions:

  1. What normally activates this feature?
  2. Why was it active in the Blank site I created but not the one the questioner created?
  3. Is it safe to activate the feature manually?
  4. Why isn’t the feature activated in a Blank Site?

 

So I decided to take some time last night after the chat to track down answers to these questions and share them on my blog this morning.

What normally activates the TaxonomyFieldAdded Feature?

The answer to this is pretty straightforward.  There is another feature called TaxonomyFeatureStapler that “staples” the TaxonomyFieldAdded Feature to most of the site definitions used in SharePoint, including the Global site definition.  You can see the Elements file from the feature below.  The one glaring omission from the list is “STS#1”, which is of course the site definition for a Blank Site. 

<?xml version="1.0" encoding="utf-8" ?> 

<!-- Copyright (c) Microsoft Corporation. All rights reserved. -->
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="GLOBAL" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="STS#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="STS#2" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="MPS#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="MPS#1" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="MPS#2" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="MPS#3" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="MPS#4" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="WIKI#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="BLOG#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SGS#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="BDR#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="OFFILE#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="OFFILE#1" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPS#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPSPERS#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPSMSITE#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPSNEWS#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPSNHOME#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPSSITES#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPSREPORTCENTER#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SPSPORTAL#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="SRCHCEN#0" />
<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="PROFILES#0" />

<FeatureSiteTemplateAssociation Id="73EF14B1-13A9-416b-A9B5-ECECA2B0604C" TemplateName="CMSPUBLISHING#0" />

</Elements>

Why was it active in my Blank site but not the questioner’s?

After looking at the contents of the TaxonomyFieldAdded Feature itself and the Feature that staples it to most site definitions the answer to this question is pretty clear.  As a Site scoped feature this feature is only activated when creating a top level site for a new site collection.  The questioner had created his Blank site as the root of a new site collection while I had created mine as a sub site in a site collection with a Team site as the root.  So in my site collection the TaxonomyFieldAdded Feature was activated when I built the root Team site while the questioner never got the Feature by building their root site as a Blank site.

Is it safe to activate theTaxonomyFieldAdded Feature manually?

This question is a little harder to answer, but it would appear that the answer is yes its safe.  There are several points that lead me to believe that it is safe to activate manually:

  • The TaxonomyFeatureStapler Feature adds it to most of the other site definitions, including the Global template that everything else inherits from.  Its therefore likely that the Feature doesn’t depend on a particular site definition’s capabilities. 
  • The TaxonomyFieldAdded Feature itself is self contained and doesn’t have any additional Feature dependencies.
  • The Feature works normally in a sub-site created from the Blank Site template if the root site was created with one of the other “stapled” templates.

So it would appear to be safe to activate this hidden feature on any site collection, including those built with a Blank site at the root.  You can use the command line below to activate the feature using STSADM:

STSADM -o activatefeature -n TaxonomyFieldAdded -url <URL of Root Site>

 

Why isn’t the feature activated in a Blank Site based Site Collection?

I can’t give you a definitive answer for this one since I’m not on the SharePoint product team that developed the definitions.  But I think the answer can be found in the purpose of the Blank Site template.  This template is designed to be a completely blank slate to which you can add whatever you want.  Very few but the most basic Features are automatically activated when creating a Blank Site.  Even the Basic Standard and Enterprise Site Features are left deactivated.  So I think the TaxonomyFieldAdded Feature is left out for the same reason, to keep the Blank Site as bare as possible.

I hope this little exercise clears up the mystery and helps teach all of us a bit more about Features in SharePoint 2010.

SharePoint 2010 Trial Versions Now Available

SharePoint2010 If you’ve been wanting to get your hands on SharePoint 2010, but don’t have a subscription to either Technet or MSDN then here is your chance.  180 day evaluation copies of 4 different editions of SharePoint 2010 are now available for download FREE!  These are all SharePoint Server editions (Remember you can download a fully licensed copy of SharePoint Foundation for FREE already.)  The four different evaluation editions available are listed below:

  • SharePoint Server 2010 Enterprise License  – For organizations looking to expand their business collaboration platform to enable advanced scenarios. Use the Enterprise capabilities of SharePoint to fully interoperate with external line-of-business applications, Web services, and Microsoft Office client applications; make better decisions with rich data visualization, dashboards, and advanced analytics; and build robust forms and workflow-based solutions.
  • SharePoint Server 2010 Standard License – For organizations looking to deploy a business collaboration platform across all types of content. Use the core capabilities of SharePoint to manage content and business processes, find and share information and expertise, and simplify how people work together across organizational boundaries.
  • SharePoint Server 2010 for Internet Sites, Enterprise – For organizations looking to create customer-facing public internet sites and private extranets using the full enterprise capabilities of SharePoint. This provides full SharePoint Enterprise functionality and no other technical limits.
  • SharePoint Server 2010 for Internet Sites, Standard – For small and mid-sized organizations looking to create public Internet sites or basic extranets using the Standard features of SharePoint Server 2010.

Here’s the link you’ll need to download any of the four.  Registration is required and upgrades from Beta versions of the product are not supported.

http://technet.microsoft.com/en-us/evalcenter/ee388573.aspx

 

You’ll also need evaluation copies of a 64 bit server operating system and SQL server if you want to evaluate the full product.  You can download evaluation copies of Windows Server 2008 r2 and SQL Server 2008 r2 from the following links:

Windows Server 2008 r2

http://www.microsoft.com/windowsserver2008/en/us/try-it.aspx

 

SQL Server 2008 r2

http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx

 

See my previous post if you want to install it on Windows 7

May SharePoint Q&A with MVP Experts

MVP_FullColor_ForScreenDo you have tough technical questions regarding SharePoint for which you’re seeking answers? Do you want to tap into the deep knowledge of the talented Microsoft Most Valuable Professionals? Then join me and other SharePoint MVPs for answers to your questions in a live forum. So please join us and bring on the questions! These chats will cover WSS, MOSS and the SharePoint 2010. Topics include setup and administration, design, development and general questions. There are two different times for the chats.  Both are listed below.  I’ll be in the one on Tuesday May 25th, but you’ll find lots of experts available both days.

Tue, May 25th, 2010

7pm EDT (4pm PDT)

Wed, May 26th, 2010

Noon EDT (9am PDT)

Join the chat room on the day of the chat:

URL: http://www.microsoft.com/communities/chats/chatrooms/msdn.aspx