Advanced Visual Studio 2005 Tools For Office Programming And Deployment

29
Advanced Visual Advanced Visual Studio 2005 Tools for Studio 2005 Tools for Office Programming Office Programming and Deployment and Deployment David Truxall David Truxall Architect Architect NuSoft Solutions NuSoft Solutions

description

Session on VSTO from a Microsoft event

Transcript of Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Page 1: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Advanced Visual Studio Advanced Visual Studio 2005 Tools for Office 2005 Tools for Office Programming and Programming and DeploymentDeployment

David TruxallDavid TruxallArchitectArchitectNuSoft SolutionsNuSoft Solutions

AgendaAgenda

Server programmingServer programming

SecuritySecurity

DeploymentDeployment

Server GoalsServer Goals

Make it as simple to create Office Make it as simple to create Office content on the server as it is for content on the server as it is for HTMLHTML

Integrate with VSTO 2005 Integrate with VSTO 2005 programming modelprogramming model

ClientServer Symmetry ClientServer Symmetry

Scale Scale ScaleScale Scale Scale

Integrate with ASP NET programming Integrate with ASP NET programming modelmodel

Server Capabilities in VSTO Server Capabilities in VSTO 20052005

Fill the data island on the serverFill the data island on the server

Program against the data on the Program against the data on the serverserver

Run code outside the documentRun code outside the document

Expose data from Office docs to ASPXExpose data from Office docs to ASPX

Server FeatureServer FeatureRead and Write Cached DataRead and Write Cached Data

Load the document (does not start the Office application)Dim productsDoc As String = CDocumentsProducts0105xlsDim doc As ServerDocument = New ServerDocument(productsDoc)

11

Read the cached data from the dataset in the worksheet Dim cdi As CachedDataItemcdi = docCachedDataManifestViews(ProductWorksheet) _ CachedData(ProductWorksheetProductCache)Dim sr As SystemIOStringReader = New _ SystemIOStringReader(cdiXml)ProductsDataReadXml(sr)

22

Write the modified dataset back to the dataset in the workbookcdiSerializeDataInstance(ProductsData)docSave()docClose()

33

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Server Side Code prepopulates elements before sending to clientServer Side Code prepopulates elements before sending to client

John is cool$34500

URL RequestCreateExpenseaspxCreateExpenseaspx

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Document is transferred with dataDocument is transferred with data

URL RequestCreateExpenseaspxCreateExpenseaspx

Mike is cooler$100000

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 2: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

AgendaAgenda

Server programmingServer programming

SecuritySecurity

DeploymentDeployment

Server GoalsServer Goals

Make it as simple to create Office Make it as simple to create Office content on the server as it is for content on the server as it is for HTMLHTML

Integrate with VSTO 2005 Integrate with VSTO 2005 programming modelprogramming model

ClientServer Symmetry ClientServer Symmetry

Scale Scale ScaleScale Scale Scale

Integrate with ASP NET programming Integrate with ASP NET programming modelmodel

Server Capabilities in VSTO Server Capabilities in VSTO 20052005

Fill the data island on the serverFill the data island on the server

Program against the data on the Program against the data on the serverserver

Run code outside the documentRun code outside the document

Expose data from Office docs to ASPXExpose data from Office docs to ASPX

Server FeatureServer FeatureRead and Write Cached DataRead and Write Cached Data

Load the document (does not start the Office application)Dim productsDoc As String = CDocumentsProducts0105xlsDim doc As ServerDocument = New ServerDocument(productsDoc)

11

Read the cached data from the dataset in the worksheet Dim cdi As CachedDataItemcdi = docCachedDataManifestViews(ProductWorksheet) _ CachedData(ProductWorksheetProductCache)Dim sr As SystemIOStringReader = New _ SystemIOStringReader(cdiXml)ProductsDataReadXml(sr)

22

Write the modified dataset back to the dataset in the workbookcdiSerializeDataInstance(ProductsData)docSave()docClose()

33

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Server Side Code prepopulates elements before sending to clientServer Side Code prepopulates elements before sending to client

John is cool$34500

URL RequestCreateExpenseaspxCreateExpenseaspx

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Document is transferred with dataDocument is transferred with data

URL RequestCreateExpenseaspxCreateExpenseaspx

Mike is cooler$100000

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 3: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Server GoalsServer Goals

Make it as simple to create Office Make it as simple to create Office content on the server as it is for content on the server as it is for HTMLHTML

Integrate with VSTO 2005 Integrate with VSTO 2005 programming modelprogramming model

ClientServer Symmetry ClientServer Symmetry

Scale Scale ScaleScale Scale Scale

Integrate with ASP NET programming Integrate with ASP NET programming modelmodel

Server Capabilities in VSTO Server Capabilities in VSTO 20052005

Fill the data island on the serverFill the data island on the server

Program against the data on the Program against the data on the serverserver

Run code outside the documentRun code outside the document

Expose data from Office docs to ASPXExpose data from Office docs to ASPX

Server FeatureServer FeatureRead and Write Cached DataRead and Write Cached Data

Load the document (does not start the Office application)Dim productsDoc As String = CDocumentsProducts0105xlsDim doc As ServerDocument = New ServerDocument(productsDoc)

11

Read the cached data from the dataset in the worksheet Dim cdi As CachedDataItemcdi = docCachedDataManifestViews(ProductWorksheet) _ CachedData(ProductWorksheetProductCache)Dim sr As SystemIOStringReader = New _ SystemIOStringReader(cdiXml)ProductsDataReadXml(sr)

22

Write the modified dataset back to the dataset in the workbookcdiSerializeDataInstance(ProductsData)docSave()docClose()

33

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Server Side Code prepopulates elements before sending to clientServer Side Code prepopulates elements before sending to client

John is cool$34500

URL RequestCreateExpenseaspxCreateExpenseaspx

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Document is transferred with dataDocument is transferred with data

URL RequestCreateExpenseaspxCreateExpenseaspx

Mike is cooler$100000

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 4: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Server Capabilities in VSTO Server Capabilities in VSTO 20052005

Fill the data island on the serverFill the data island on the server

Program against the data on the Program against the data on the serverserver

Run code outside the documentRun code outside the document

Expose data from Office docs to ASPXExpose data from Office docs to ASPX

Server FeatureServer FeatureRead and Write Cached DataRead and Write Cached Data

Load the document (does not start the Office application)Dim productsDoc As String = CDocumentsProducts0105xlsDim doc As ServerDocument = New ServerDocument(productsDoc)

11

Read the cached data from the dataset in the worksheet Dim cdi As CachedDataItemcdi = docCachedDataManifestViews(ProductWorksheet) _ CachedData(ProductWorksheetProductCache)Dim sr As SystemIOStringReader = New _ SystemIOStringReader(cdiXml)ProductsDataReadXml(sr)

22

Write the modified dataset back to the dataset in the workbookcdiSerializeDataInstance(ProductsData)docSave()docClose()

33

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Server Side Code prepopulates elements before sending to clientServer Side Code prepopulates elements before sending to client

John is cool$34500

URL RequestCreateExpenseaspxCreateExpenseaspx

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Document is transferred with dataDocument is transferred with data

URL RequestCreateExpenseaspxCreateExpenseaspx

Mike is cooler$100000

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 5: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Server FeatureServer FeatureRead and Write Cached DataRead and Write Cached Data

Load the document (does not start the Office application)Dim productsDoc As String = CDocumentsProducts0105xlsDim doc As ServerDocument = New ServerDocument(productsDoc)

11

Read the cached data from the dataset in the worksheet Dim cdi As CachedDataItemcdi = docCachedDataManifestViews(ProductWorksheet) _ CachedData(ProductWorksheetProductCache)Dim sr As SystemIOStringReader = New _ SystemIOStringReader(cdiXml)ProductsDataReadXml(sr)

22

Write the modified dataset back to the dataset in the workbookcdiSerializeDataInstance(ProductsData)docSave()docClose()

33

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Server Side Code prepopulates elements before sending to clientServer Side Code prepopulates elements before sending to client

John is cool$34500

URL RequestCreateExpenseaspxCreateExpenseaspx

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Document is transferred with dataDocument is transferred with data

URL RequestCreateExpenseaspxCreateExpenseaspx

Mike is cooler$100000

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 6: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Server Side Code prepopulates elements before sending to clientServer Side Code prepopulates elements before sending to client

John is cool$34500

URL RequestCreateExpenseaspxCreateExpenseaspx

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Document is transferred with dataDocument is transferred with data

URL RequestCreateExpenseaspxCreateExpenseaspx

Mike is cooler$100000

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 7: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Data in Office SolutionsData in Office SolutionsHow Does Server-Side WorkHow Does Server-Side Work

DataIsland

ServerServerCodeCode

Server Client

DatabasesDatabases CorporateCorporateSystemsSystems

Document is transferred with dataDocument is transferred with data

URL RequestCreateExpenseaspxCreateExpenseaspx

Mike is cooler$100000

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 8: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Filling the Data IslandFilling the Data Island

All the data in a VSTO 2005 enabled All the data in a VSTO 2005 enabled Office document is stored in a Office document is stored in a standard data islandstandard data island

This enables the VSTO 2005 runtime This enables the VSTO 2005 runtime to access the data without having to to access the data without having to invoke Word or Excelinvoke Word or Excel

BenefitsBenefitsDoesnrsquot require you to run Word or Excel Doesnrsquot require you to run Word or Excel on the serveron the server

Some significant scaling issuesSome significant scaling issues

Not supported by MicrosoftNot supported by Microsoft

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 9: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Filling A Data Island on the Filling A Data Island on the ServerServer

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 10: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

What is Not Supported What is Not Supported on the Serveron the Server

Program against the viewProgram against the viewSince Word amp Excel arenrsquot running on the Since Word amp Excel arenrsquot running on the server therersquos no way to get to the object server therersquos no way to get to the object model for each applicationmodel for each application

You can work around this quite easily since you You can work around this quite easily since you can fill the data on the server and do all the can fill the data on the server and do all the databindingview manipulation on the clientdatabindingview manipulation on the client

Integrate with other Office appsIntegrate with other Office appsSince theyrsquore not running on the serverSince theyrsquore not running on the server

However XMLWeb Services provide an ideal However XMLWeb Services provide an ideal way to do thisway to do this

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 11: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Server SummaryServer Summary

Program against the data on the Program against the data on the serverserver

Access any VSTO 2005 document Access any VSTO 2005 document from within an ASPX pagefrom within an ASPX page

Built to scale from day oneBuilt to scale from day one

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 12: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

NET SecurityNET Security

VSTO Security managed by NET VSTO Security managed by NET security policysecurity policy

Evidence (location signature etc)Evidence (location signature etc)

Permissions (execution UI full etc)Permissions (execution UI full etc)

Since code in VSTO documents call Since code in VSTO documents call into the Office OM (unmanaged into the Office OM (unmanaged code) we require Full Trust code) we require Full Trust permissionpermission

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 13: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

VSTO 2005 SecurityVSTO 2005 Security

Wonrsquot run any code by defaultWonrsquot run any code by default

Must trust both the document and the Must trust both the document and the assembly (Full Trust)assembly (Full Trust)

Evidence for assemblies is viaEvidence for assemblies is viaSigning Authenticode or Strong NamingSigning Authenticode or Strong Naming

Location URL Location URL

Local Machine Zone is not enoughLocal Machine Zone is not enough

Evidence for documents is via LocationEvidence for documents is via LocationE-mail attachments must be copied to desktop E-mail attachments must be copied to desktop (Outlook temp directory is Internet Zone)(Outlook temp directory is Internet Zone)

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 14: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Code Security ScenariosCode Security Scenarios

Alice creates a VSTO 2005 project for a Budget Alice creates a VSTO 2005 project for a Budget SpreadsheetSpreadsheet

Alice hands over final code to Bob in ITAlice hands over final code to Bob in IT

Bob deploys code amp document to Bob deploys code amp document to httpbudgethttpbudget

Bob deploys security policy to end users machine Bob deploys security policy to end users machine to trust to trust httpbudgethttpbudget

Fred creates a new budget from Fred creates a new budget from httpbudgethttpbudget

Code runsCode runs

Fred sends it to Sue via emailFred sends it to Sue via email

Sue save the budget sheet to her desktopSue save the budget sheet to her desktop

Opens it from the desktopOpens it from the desktop

Code runsCode runs

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 15: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Code Security ndash Code Security ndash VeryEvilcomVeryEvilcom

Evil Alice creates fakebudgetxls and Evil Alice creates fakebudgetxls and creates a VSTO 2005 projectcreates a VSTO 2005 project

Evil Alice deploys code to Evil Alice deploys code to httpveryevilcombudgethttpveryevilcombudget

Evil Alice sends fakebudgetxls to Bob Evil Alice sends fakebudgetxls to Bob in emailin email

Bob opens the spreadsheetBob opens the spreadsheet

No code runs because No code runs because httpveryevilcomhttpveryevilcom isnrsquot trusted isnrsquot trusted

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 16: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Bad Trust DecisionBad Trust DecisionISV Alice writes some VSTO 2005 code behind ISVBudgetxlsISV Alice writes some VSTO 2005 code behind ISVBudgetxls

Deploys code and budget to Deploys code and budget to httpwwwbudgetsruscomhttpwwwbudgetsruscom

Fred creates a budget from website amp saves it to his Fred creates a budget from website amp saves it to his machinemachine

IT Bob discovers bug in the code behind ISVBudgetxls that IT Bob discovers bug in the code behind ISVBudgetxls that compromises the corp security practicescompromises the corp security practices

Bob tells ISV Alice but the fix wonrsquot be ready for weeksBob tells ISV Alice but the fix wonrsquot be ready for weeks

Bob blocks access to Bob blocks access to httphttpwwwbudgetsruscomwwwbudgetsruscom for the for the corporationcorporation

Budgets donrsquot work but the corp security is safeBudgets donrsquot work but the corp security is safe

Alice fixes bugAlice fixes bug

Bob reinstates access to Bob reinstates access to httpwwwbudgetsruscomhttpwwwbudgetsruscom

The sun shinesThe sun shines

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 17: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Security ConfigurationSecurity Configuration

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 18: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Deployment amp Deployment amp UpdateUpdate

Self updating DocumentSelf updating DocumentApp Manifest is updated to point to App Manifest is updated to point to the latest assemblythe latest assembly

Manifest based deploymentManifest based deploymentApplication level and deployment Application level and deployment level manifestslevel manifests

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 19: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

How Does This How Does This WorkWork

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 20: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Move to Production ServerMove to Production Server

ltmanifestgtltdeployurl=httphellipdeployxmlversion=ldquo10rdquogt

ltmanifestgtltdeploy url=httpsvr2deployxmlversion=ldquo101rdquogtltassemblyName=ldquofoodllrdquoupdateURL=http101foodll

ltmanifestgtltdeploy url= httpsrv1deployxmlversion=ldquo10rdquogt

Deployxml manifestxml

manifestxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Fooxls

manifestxml

Foodll v10

Foodll v101

Deployxml

ltmanifestgtcurVersion-rdquo101rdquoltapp url=ldquohttpsrv2 manifestxmlrdquo

Test Srv

Production Srv

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 21: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Server Object Model to Server Object Model to modify modify App ManifestApp Manifest

CustomizedDocument doc = new CustomizedDocument doc = new CustomizedDocument (ldquofiledocrdquo)CustomizedDocument (ldquofiledocrdquo)

docAppManifestDeployManifestPathdocAppManifestDeployManifestPath = ldquohellipltnew pathgtrdquo= ldquohellipltnew pathgtrdquo

Can change any parts of the app Can change any parts of the app manifestmanifest

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 22: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Why ManifestsWhy ManifestsNET and Visual Studio moving to NET and Visual Studio moving to manifestsmanifestsBuilt using the same schema as Click Built using the same schema as Click OnceOnce

New technology coming in the next version New technology coming in the next version of NETVSof NETVSBuilt into VistaBuilt into Vista

Manifests provide rich information Manifests provide rich information about your applicationabout your application

Not just which dll is usedNot just which dll is usedIncludes dependent assembliesIncludes dependent assembliesLocation of assemblies (moving to Product Location of assemblies (moving to Product server)server)

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 23: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

Deployment BasicsDeployment Basics

Requirements for the target Requirements for the target machinesmachines

Office 2003 Professional or Excel 2003 Office 2003 Professional or Excel 2003 Standalone or Word 2003 StandaloneStandalone or Word 2003 Standalone

NET Framework 20NET Framework 20

VSTO 2005 RuntimeVSTO 2005 Runtime

Office PIAs referenced in your assemblyOffice PIAs referenced in your assemblyCan be set to install on demandCan be set to install on demand

Appropriate security policiesAppropriate security policies

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 24: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

LocalLocal Deployment LocalLocal Deployment ModelModel

ProsProsNetwork access is not Network access is not requiredrequired

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document or Updates to document or assembly require assembly require redistribution to each redistribution to each useruser

LocalLocal

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 25: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

LocalNetwork Deployment LocalNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Users can modify and Users can modify and customize their customize their documents documents

ConsConsUpdates to document Updates to document require redistribution to require redistribution to each usereach user

Local Network

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 26: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

NetworkNetwork Deployment NetworkNetwork Deployment ModelModel

ProsProsEases updates to Eases updates to assemblyassembly

Eases updates to Eases updates to documentdocument

ConsConsUsers cannot modify or Users cannot modify or customize master customize master documentsdocuments

Network Network

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 27: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

ConclusionConclusion

ServerServerProgram against the data on the serverProgram against the data on the server

Access any VSTO 2005 document from Access any VSTO 2005 document from within an ASPX pagewithin an ASPX page

SecuritySecurityMust trust document and assemblyMust trust document and assembly

Doesnrsquot run by defaultDoesnrsquot run by default

Deployment optionsDeployment optionsDocumentassembly optionsDocumentassembly options

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 28: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

copy 2005 Microsoft Corporation All rights reservedThis presentation is for informational purposes only Microsoft makes no warranties express or implied in this summary

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29
Page 29: Advanced Visual Studio 2005 Tools For Office Programming And Deployment

BIND LIST

If Not MeEmpData Is Nothing Then MeList1DataSource = MeEmpDataTables(0) Else

MeList1DataSource = nothing End If

FILL DATA ISLAND

Protected Sub GridView1_RowUpdating(ByVal sender As Object ByVal e As SystemWebUIWebControlsGridViewUpdateEventArgs) Handles GridView1RowUpdating

Dim da As New SqlClientSqlDataAdapter(MeSqlDataSource1SelectCommand MeSqlDataSource1ConnectionString)

Dim empData As DataSet = New DataSet() daFill(empData) Dim doc As ServerDocument = New ServerDocument(ServerMapPath(EmployeeServerDataxls)) Dim hostItem As CachedDataHostItem Dim dataItem As CachedDataItem hostItem = docCachedDataHostItems(EmployeeServerDataSheet1) dataItem = hostItemCachedData(EmpData) dataItemSerializeDataInstance(empData) docSave() docClose()End Sub

  • Advanced Visual Studio 2005 Tools for Office Programming and Deployment
  • Agenda
  • Server Goals
  • Server Capabilities in VSTO 2005
  • Server Feature Read and Write Cached Data
  • Data in Office Solutions How Does Server-Side Work
  • Slide 7
  • Filling the Data Island
  • Slide 9
  • What is Not Supported on the Server
  • Server Summary
  • NET Security
  • VSTO 2005 Security
  • Code Security Scenarios
  • Code Security ndash VeryEvilcom
  • Bad Trust Decision
  • Slide 17
  • Deployment amp Update
  • How Does This Work
  • Move to Production Server
  • Server Object Model to modify App Manifest
  • Why Manifests
  • Deployment Basics
  • LocalLocal Deployment Model
  • LocalNetwork Deployment Model
  • NetworkNetwork Deployment Model
  • Conclusion
  • Slide 28
  • Slide 29