Office Business Applications: Enhanced Deployment Saurabh Bhatia Program Manager Microsoft Corporation Andrew Whitechapel Senior PM Microsoft Corporation TL01
Mar 31, 2015
Office Business Applications: Enhanced Deployment
Saurabh BhatiaProgram ManagerMicrosoft Corporation
Andrew WhitechapelSenior PMMicrosoft Corporation
TL01
Office solution deployment timeline An Office Business Application The deployment experience in VS 2008
ClickOnce deployment for Office Client customizations
Improvements in VS 2010 Multiproject deployment Post deployment actions Advances in .NET type system
Agenda
The Deployment Timeline
VS 2005Emulated “ClickOnce”
The Deployment Timeline
VS 2005Emulated “ClickOnce”
VS 2008Real ClickOnce-Publish-Installer-Pre-reqs
The Deployment Timeline
VS 2005Emulated “ClickOnce”
VS 2008Real ClickOnce-Publish-Installer-Pre-reqs
VS 2010Enhanced ClickOnce-Multi-project-Post Deployment Actions-No PIAs
Requirement: Regular auditing exercises Extract email data from Outlook Perform calculations/charting on it
Architecture of the solution Excel template customization talks to Outlook add-in to
fetch email data for processing in Excel
The Business Problem
An Office Business Application Saurabh Bhatia
Program ManagerVisual Studio BizApps
demo
Architecture Of The Solution
Outlook Add-in
Excel Template Customization
Private Shared
Assembly
Pre-Requisites
Office PIAs
VSTO Runtime
.NET Framework
Solution requires 3 projects Excel template customization Outlook add-in Shared Class Library
Pre-requisites needed .NET Framework VSTO Runtime Office Primary Interop Assemblies (PIA)
Solution can be deployed with ClickOnce in VS 2008
Deploying The Solution
VSTO ClickOnce Deployment In VS 2008 Saurabh Bhatia
Program ManagerVisual Studio BizApps
demo
Full end-to-end solution installation through ClickOnce Publishing in Visual Studio Prerequisites can be
installed through setup.exe Updates and Offline
access via the ClickOnce Cache
VSTO ClickOnce In Visual Studio 2008
Multiple projects deployed separately ClickOnce in VS 2008 has limited flexibility
Excel template must be moved outside of the ClickOnce mechansim
This breaks the update and uninstall scenarios Office solutions have a
dependency on the Office PIAs Require admin rights to install Version-specific: You must deploy the version of the
PIAs that matches the version of Office you’re targeting, and maintain these in-sync
Customer Pain Points With VS 2008 Deployment
Improvements In VS 2010
Multi-project deployment packages Post-deployment custom actions “No-PIAs” – eliminate
the dependency on the PIAs
MultiProject Deployment
A single ClickOnce package can now contain Multiple Add-ins and document customizations Customizations for different
Office Client applications All customizations Install/Update and
Uninstall as one package Customizations can be added
or removed as part of an update
Packaging Multiple Projects In One Deployment
Application Manifest updated to contain References to all dependent files for all
included customizations Multiple entry points- An entry point for every
individual customization An unique id value identifying each entry point
Installing MultiProject Deployment
One entry is created in Programs and Features
All Application Files are downloaded to the same ClickOnce Cache location
Individual customizations are registered to start with the appropriate Office Application
Add-ins:\HKCU\Software\Microsoft\Office\Outlook\Addins\MyOutlookAddIn\
manifest=MultiProject.vsto|id=MyOutlookAddInDocument Customizations:
_AssemblyLocation= MultiProject.vsto|id=MyExcelTemplate
MultiProject Deployment
Saurabh BhatiaProgram ManagerVisual Studio BizApps
demo
MultiProject Application Manifest
<dependency><dependentAssembly dependencyType="install"
allowDelayedBinding="true" codebase="WordAddIn1.dll" size="9728">
...<dependentAssembly dependencyType="install"
allowDelayedBinding="true" codebase="ExcelWorkbook1.dll" size="13312">
...</dependency>
MultiProject Application Manifest
<vstav3:entryPoints id="WordAddIn1">...<vstav3:entryPoints id="ExcelWorkbook1"> ... </vstav3:entryPoints><vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-
com:vsto.v4"><vstov4:customization id="WordAddIn1">...<vstov4:customization id="ExcelWorkbook1">...</vstov4:customizations>
MultiProject Deployment
Package multiple Office customizations as one ClickOnce Package
Customizations Install/Update and Uninstall as one package
The Application Manifest describes the entry points for the multiple customizations
Post Deployment Actions
Developer defined custom actions Provides a extensible hook into the
ClickOnce deployment mechanism Runs when the VSTO customization is being
Installed/Updated or Uninstalled
What Can You Do With A Post Deployment Action?
Anything as long as it requires Current User Privilege Copy a template to a particular location of the
end users machine Read/Write registry keys
Standard ClickOnce restrictions Current user privileges (asInvoker only) Cannot display UI or interact with end user
Post Deployment ActionsPost Deployment Actions
Post Deployment Actions
Install / Update
Download Manifests
ClickOnce Security Checks
Download App Files to Cache
Finish
Post Deployment Actions
Multiple Post Deployment Actions are allowed in a single deployment Each action is run sequentially Each Post Deployment Action is isolated
in its own Application Domain If one of the Actions fail then the
process is aborted and the remaining actions are called in reverse
Creating A Post Deployment Action
Implement the IAddInPostDeploymentAction Interface
Associate the Post Deployment Action with a deployment package
Post Deployment Action Interface
IAddInPostDeploymentAction Interface Execute(AddInPostDeploymentActionArgs)
AddInPostDeploymentActionArgs InstallationStatus, AddInPath,
PostActionManifestXml, Manifest, ApplicationManifestXml, DeploymentManifestXml, HostManifestXml, ProductName, Version
Post Deployment Action
using Microsoft.VisualStudio.Tools.Applications.Deployment;
namespace Microsoft.Samples
{
Public class PostDeploymentActionAddInSample : IAddInPostDeploymentAction
{public void Execute(AddInPostDeploymentActionArgs args)
{Switch(args.InstallationStatus){case AddInInstallationStatus.InitialInstall:case AddInInstallationStatus.Uninstall:case AddInInstallationStatus.Update:case AddInInstallationStatus.Rollback:}
}}
}
Post Deployment Action XML
Associate a Post Deployment Action in the Application Manifest Specify the Assembly and entry point to the
Post Deployment Action Optionally specify any additional data that can
be used by the Post Deployment Action
<vstav3:postActions><vstav3:postAction><vstav3:entryPoint class=“SamplePostAction.MyAction">
<assemblyIdentity name=“SamplePostAction" version="1.0.0.0" language="neutral" processorArchitecture="msil" /></vstav3:entryPoint><vstav3:postActionData>
<MyData>My Post Action can read this data</MyData></vstav3:postActionData></vstav3:postAction></vstav3:postActions>
Post Deployment Action Saurabh Bhatia
Program ManagerVisual Studio BizApps
demo
Solution Updates
Office Business Application Version 2 Update Outlook Add-in to include another
method GetDataFiltered(days) – Collect email data for the specified number of days
Replace Excel Template with an Excel Add-in When solution is updated to Version 2 the
Excel Template in the end user’s My Templates should be deleted
Updating A Deployed Solution Saurabh Bhatia
Program ManagerVisual Studio BizApps
demo
Post Deployment Actions
Custom extensibility hook in the ClickOnce deployment mechanism
Perform as custom action under current user privilege
Powerful and flexible mechanism The power is in your hands so use it wisely
No More PIAs
New Feature in CLR 4.0 Eliminates the need to deploy the Office
Primary Interop Assemblies
Related TalkUnder the Hood: Advances in the .NET Type System
Misha Shneerson
Type Embedding Key points
Information required to call into COM objects is embedded into the assembly itself
Runtime dependency on Interop Assemblies can be eliminated
You can continue to develop against the Office Interop assemblies at designtime but they are no longer needed at runtime
IntelliSense,AutoComplete Type Information
Partial Type Information
Type EmbeddingDevelopment experience
Client Assembly
Local Types
VS Code Editor
Primary Interop
Assembly
C#/VBCompiler
No PIAs
Saurabh BhatiaProgram ManagerVisual Studio BizApps
demo
No More PIAs
.NET 4.0 targeted Office customizations do not need to deploy the Office PIAs
Pre-requisites required .NET Framework 4.0 VSTO Runtime 4.0 Office PIAs
Solution Deployment
Outlook Add-in
Excel Template Customization
Private Shared
Assembly
Pre-Requisites
Office PIAs
VSTO Runtime
.NET Framework
Solution Deployment
Excel Template Customization
Private Shared
Assembly
Outlook Add-in
Pre-Requisites
Office PIAs
VSTO Runtime
.NET Framework
Solution Deployment
Excel Template Customization
Private Shared
Assembly
Outlook Add-in
MultiProject Deployment
Pre-Requisites
Office PIAs
VSTO Runtime
.NET Framework
My Templates
Folder
Post Deployment
Action
Solution Deployment
Excel Template Customization
Private Shared
Assembly
Outlook Add-in
MultiProject Deployment
Pre-Requisites
Office PIAs
VSTO Runtime
.NET Framework
My Templates
Folder
Post Deployment
Action
Solution Deployment
Excel Add-in
Private Shared
Assembly
Outlook Add-in
MultiProject Deployment
Pre-Requisites
Office PIAs
VSTO Runtime
.NET Framework
My Templates
Folder
Post Deployment
Action
Solution Deployment
Excel Add-in
Private Shared
Assembly
Outlook Add-in
MultiProject Deployment
Pre-Requisites
VSTO Runtime
.NET Framework
Conclusions
Multiproject Deployment allows you to combine multiple customizations into one deployment package
Post Deployment Actions provide an extensible hook that can be used to run custom install steps
No PIA – Embedded COM Interop removes the need to deploy Office Primary Interop Assemblies
VSTO Team bloghttp://blogs.msdn.com/vsto
Andrew Whitechapel’s bloghttp://blogs.msdn.com/andreww
VSTO Developer Portalhttp://msdn.com/vsto
OBA Portal http://www.microsoft.com/oba
Additional Resources
Please use the microphones provided
Q&A
Evals & Recordings
Please fill
out your
evaluation for
this session at:
This session will be available as a recording at:
www.microsoftpdc.com
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.