Deploying Office Web Apps in the Enterprise

Last Month, Nick wrote about the Office Web Apps team attending the SharePoint Conference to discuss Office Web Apps and how they can be deployed on SharePoint Foundation Server 2010.  With the impending Beta release of both SharePoint and Office Web Apps for business customers, we thought that it would be a great time to discuss some of the content which we covered at the conference, on this blog.  Specifically, we wanted to spend just a little time in this post discussing:

  1. How Office Web Apps work once deployed on SharePoint (and thus what you should expect once you complete your installation and activation)
  2. What steps an administrator would need to take in order to get the Beta version of the Office Web Apps deployed

While this is not intended to be an in depth treatment of deploying and managing Office Web Apps, I hope that it provides you with enough context to get you started on the path of deploying the Office Web Apps Beta on SharePoint Foundation Server 2010.

Thus, without further ado, let's turn our attention to exactly how these components are deployed to integrate with SharePoint and how you can get them up and running in your environment. 

Office Web Apps Deployed on SharePoint: Under the hood

Before discussing the explicit steps involved in deploying Office Web Apps, I want to spend a few minutes giving an overview of how Office Web Apps work.  That way, if an issue does come up, you'll be able to better troubleshoot any issues that might arise as you begin to both deploy and run Office Web Apps on a daily basis.  Further, you'll also be able to better tune Office Web Apps for your particular environment. 

From a high level, Office Web Apps are designed to represent your document, natively, in the browser, using only standard browser objects, such as HTML, JavaScript, etc.  Tangentially related, it's because we attempt to adhere closely to HTML standards that these renditions work well in all of our supported browsers, including Firefox and Safari.  The key to understanding how Office Web Apps work is to understand where the magic happens to generate this native representation of your document in the browser.

Fundamentally, our system is designed to be run across two components: the web front end and the back-end (commonly known as the "application server" in SharePoint parlance).

  

As illustrated by the above diagram, the front-end components consist of a series of web pages and handlers that are largely responsible for generating and returning an HTML based representation of the document to the browser.  Additionally, some, but not all, of the front-end components rely on assistance from the backend in generating this representation of the document. These backend components, which consist of a series of services ("shared applications," again, in SharePoint parlance), are responsible for heavier weight operations, such as performing calc in the case of Excel, or generating an image based representation of the document or presentation in the case of Word or PowerPoint.  The front-end components leverage the output of each of these backend services in order to produce the final view of the document in the browser. 

It's worth noting that these components don't necessarily have to run on separate boxes.  In fact, if you install SharePoint Foundation Server 2010 in evaluation mode on a single machine, and then install Office Web Apps on top of that installation, everything will run successfully from that machine.

Deploying Office Web Apps

Now that you have a high level understanding of exactly what components Office Web Apps will add to your SharePoint installation, and how they work, let’s turn our attention to exactly how you install Office Web Apps.  While the details can be found in the deployment guide, from a high-level, the process looks like this:

  • Install wcsetup.exe on every machine in your farm, and run PSConfig once installation is complete
  • Once installed, start the aforementioned services on the boxes on which you want to run the supporting services for Office Web Apps, and then activate the service applications for the farm.
  • If you're going to take advantage of PowerPoint Web App to power the PowerPoint Broadcast feature, add support for that feature by creating a Broadcast Site Collection (for more information on that feature, please see this link)
  • Activate “Office Web Apps,” listed under SharePoint’s Site Collection Features, on each site collection for which Office Web Apps should be available.

If you are attempting to install Office Web Apps on a farm with a large number of site collections, or you are looking to do a staged roll-out, one thing to be aware of as you set out to install Office Web Apps is that they will take over the default click behavior in all document libraries automatically.  Thus, we recommend that you change settings such that default-click goes to the client, as described in the last section of the deployment guide. That way, customers will be able to continue interacting with their documents from the Office desktop applications, while the Office Web Apps installation completes.

Additional information

It's worth noting that the above information only starts to skim the surface of this topic.  To learn more about how to deploy Office Web Apps on SharePoint, you should take a closer look into the deployment guide.  Additional resources will also start to be made available for each of the individual Office Web Apps over the next 6 months, as we continue to generate more content to help you better administer the Office Web Apps deployed on SharePoint (keep an eye on the blog and Technet for more updates). 

In the meantime, we hope that these resources will give you everything that you need to successfully install and administer Office Web Apps in your enterprise for the Beta2 timeframe.  If you have any trouble at all, please let us know in the comments.  Thanks!

Franklin Williams,
Program Manager, Office Web Apps

Office Blogs Comments

Comments: (34) Collapse

  • I have run into a mistake when i configure the PSConfigUI.exe.

    Failed to load or formatstring Id ManagementUI_ExcelCalculationService_FriendlyName for culture zh-cn.

    TypeInitializationException:"Microsoft.Office.Excel.Server.Host.ExcelServerHost"

    ????

  • I have run into a mistake when i configure the PSConfigUI.exe.

    Failed to load or formatstring Id ManagementUI_ExcelCalculationService_FriendlyName for culture zh-cn.

    TypeInitializationException:"Microsoft.Office.Excel.Server.Host.ExcelServerHost"

    ????

  • @Diligency-Boy

    Have you installed the language packs for SharePoint?

    www.microsoft.com/.../details.aspx

    It's possible that this may be what's causing this issue.

  • Hi,

    Well I had configured the Office Web Apps beta. ON the SHarePoint 2010 Configuration wizard on step 3 and second time on step 5, I got below error.

    Failed to register SharePoint services.An exception of type System.InvalidOperationException was thrown.  Additional exception information: Failed to load or format string Id ManagementUI_ExcelCalculationService_FriendlyName for culture en-US: System.TypeInitializationException: The type initializer for 'Microsoft.Office.Excel.Server.Host.ExcelServerHost' threw an exception. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeLoadException: Could not load type 'Microsoft.Office.Excel.Server.MossHost.IHostExtension' from assembly 'Microsoft.Office.Excel.Server.MossHost, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.

     at System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase)

     at System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

     at Microsoft.Office.Excel.Server.MossHost.MossHost.TryCreateHostExtension(String className, IHostExtension& extension)

     at Microsoft.Office.Excel.Server.MossHost.MossHost.LoadHostExtensions()

     --- End of inner exception stack trace ---

     at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)

     at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)

     at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)

     at System.Activator.CreateInstance(Type type, Boolean nonPublic)

     at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.CreateHost(String assemblyName, String className)

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.CreateHost()

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost..cctor()

     --- End of inner exception stack trace ---

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.get_Host()

     at Microsoft.Office.Excel.Server.StringManager.get_BrandStrings()

     at Microsoft.Office.Excel.Server.StringManager.GetString(StringId id, EncodingType encodingType, Boolean syncCultures, Object[] args)

    System.InvalidOperationException: Failed to load or format string Id ManagementUI_ExcelCalculationService_FriendlyName for culture en-US: System.TypeInitializationException: The type initializer for 'Microsoft.Office.Excel.Server.Host.ExcelServerHost' threw an exception. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeLoadException: Could not load type 'Microsoft.Office.Excel.Server.MossHost.IHostExtension' from assembly 'Microsoft.Office.Excel.Server.MossHost, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.

     at System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase)

     at System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

     at Microsoft.Office.Excel.Server.MossHost.MossHost.TryCreateHostExtension(String className, IHostExtension& extension)

     at Microsoft.Office.Excel.Server.MossHost.MossHost.LoadHostExtensions()

     --- End of inner exception stack trace ---

     at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)

     at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)

     at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)

     at System.Activator.CreateInstance(Type type, Boolean nonPublic)

     at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.CreateHost(String assemblyName, String className)

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.CreateHost()

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost..cctor()

     --- End of inner exception stack trace ---

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.get_Host()

     at Microsoft.Office.Excel.Server.StringManager.get_BrandStrings()

     at Microsoft.Office.Excel.Server.StringManager.GetString(StringId id, EncodingType encodingType, Boolean syncCultures, Object[] args) ---> System.TypeInitializationException: The type initializer for 'Microsoft.Office.Excel.Server.Host.ExcelServerHost' threw an exception. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeLoadException: Could not load type 'Microsoft.Office.Excel.Server.MossHost.IHostExtension' from assembly 'Microsoft.Office.Excel.Server.MossHost, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.

     at System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase)

     at System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

     at Microsoft.Office.Excel.Server.MossHost.MossHost.TryCreateHostExtension(String className, IHostExtension& extension)

     at Microsoft.Office.Excel.Server.MossHost.MossHost.LoadHostExtensions()

     --- End of inner exception stack trace ---

     at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)

     at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)

     at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)

     at System.Activator.CreateInstance(Type type, Boolean nonPublic)

     at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.CreateHost(String assemblyName, String className)

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.CreateHost()

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost..cctor()

     --- End of inner exception stack trace ---

     at Microsoft.Office.Excel.Server.Host.ExcelServerHost.get_Host()

     at Microsoft.Office.Excel.Server.StringManager.get_BrandStrings()

     at Microsoft.Office.Excel.Server.StringManager.GetString(StringId id, EncodingType encodingType, Boolean syncCultures, Object[] args)

     --- End of inner exception stack trace ---

     at Microsoft.Office.Excel.Server.StringManager.GetString(StringId id, EncodingType encodingType, Boolean syncCultures, Object[] args)

     at Microsoft.Office.Excel.Server.MossHost.ExcelServerWebService.get_TypeName()

     at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServiceInConfigDB(Boolean provisionTheServiceToo, String serviceRegistryKeyName)

     at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServices(Boolean provisionTheServicesToo)

     at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.Run()

    After some research I find on some ones blog to remove the registry entry of Excel Service. After that the wizard runs successfully. But when I open the PowerPoint in the browser I am getting the below issue.

    "PowerPoint Web App cannot open this presentation for viewing because of an unexpected error. To view this presentation, open it in Microsoft PowerPoint."

    I have done following steps

    1. Activated the Feature

    2. Started the service

    3. Created the Proxy service

    4. Checked the service Accounts

    5. Checked the App Pool for the service

    But The issue remains. I have also tried the for 2 times sames steps. It kills my 2 days :). Any help will be appropriated.

    Bharat Sukhwal

    MCP/MCTS(WSS 3.0 and SharePoint 2010)

< Previous  1 2 3
Comments

Comments: (loading) Collapse