dev396 windows forms: no touch deployment tips and tricks jamie cool program manager.net client...

28
DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager .NET Client Microsoft Corporation

Upload: nicholas-underwood

Post on 17-Jan-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

DEV396Windows Forms:No Touch Deployment Tips and TricksJamie Cool

Program Manager

.NET Client

Microsoft Corporation

Page 2: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Introduction

Deploying the Framework

Debugging Deployments

Performance Tips

Designing for SecurityHow to be safe and functional?

Safely modifying security policy

Page 3: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

No Touch Deployment

Run managed apps without installZero-impact

Deploy via network (HTTP)URL to EXE

Controls in a web page

UNC/File Share

Requires the .NET FX on the client box

Page 4: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Deploying the Framework

All deployments require Framework redistributable

Detect Framework on web pageBuilt into IE’s User-Agent String

Dim clrV as String = Request.Browser.ClrVersion

window.navigator.userAgent

ASP.NET makes this simple on the server

Page 5: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Framework Bootstrapper

Versions for RTM, Everett

Launches MSI install of Framework

Use if Framework not detected

Use for local EXE deploys

CAVEAT: User must have install rights

Page 6: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Debugging URL-Launched Apps

URL-launched EXEs run in IEExec

System sees IEExec, not “MyApp.exe”

How to debug on launch?Launch IEExec from debugger

RTM: IEExec url flags [securityZone] [domainID]

1.1: IEExec url

Page 7: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Debugging in Browser

IEHost – equivalent of IEExecProvides CLR hosting, security

Startup errors usually show blank page

How to debug?FUSLOGVW.EXE

IEHost Debug Log – Q313892

Page 8: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Debugging Network Debugging Network DeploymentsDeployments

demodemo

Page 9: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

No-Touch Performance

“Probing”: Searching appBase for assemblies

Happens for updates, resources

Can hammer performance

Use .config file to eliminate probing Q814668

OR: Set Language=Neutral in Forms

Page 10: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Using .config Files

Used by EXEs, Browser controlsApp-specific data, customization

RTM: ASP.NET blocks .config

Resolved in 1.1

BUT: Only anonymous access allowed

Alternative: Custom XML config via HTTP

Page 11: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Code Access Security

Evidence-based security model

Partial trust: Runs with reduced rights

Granular - no more “all-or-none”

Extensible (add new permissions)

Page 12: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Evidence-Based Security

EvidenceStrong name, site, Authenticode signature, etc.

PermissionsControl access to a resource

PolicyEvidence + Permissions

Determines what code can do

Page 13: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Demands Make It Work

Demand causes stack walkMYAPP (INTRANET)MYAPP (INTRANET). . . .. . . .myComponent.ReadSetting(key);myComponent.ReadSetting(key);. . . .. . . .

MYCOMPONENT (LOCALMACHINE)MYCOMPONENT (LOCALMACHINE). . . .. . . .Stream fileStream = FileStream.Open(“settings.xml”);Stream fileStream = FileStream.Open(“settings.xml”);. . . .. . . .

CallsCalls

Got Permission?Got Permission?

Got Permission?Got Permission?

ExceptionException

CallsCalls

FRAMEWORKFRAMEWORKpublic FileStream (string name) {public FileStream (string name) { FileIOPermission fp = new FileIOPermission(name)FileIOPermission fp = new FileIOPermission(name) fp.Demand()fp.Demand() . . . .. . . .}}

Page 14: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Security In ActionSecurity In Action

demodemo

Page 15: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Local Machine - Defaults

FullTrust PermissionSetFull access to all machine capabilities

UnmanagedCode permission granted

But: Requires installation (xcopy)

FullTrust double-edged sword

Page 16: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Intranet/Internet - Defaults

Best End-User ExperienceNo installation

No registry touch

No admin/user action required

But: More limited permissions

Page 17: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Comparing Defaults

Local Intranet Internet

UI Full Full Limited

Network Full Same site Same site

Printing Full Via print dialog Via print dialog

File System Full Via file dialog Via file dialog

Environment Full Some

Unmanaged Full

Registry Full

Database Full

Security Full

Page 18: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Working In Partial Trust

File system accessUse FileDialogs, Isolated Storage

Database accessXML Web Services

Remote XML Web ServicesCreate same-site proxy

Page 19: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Working In Partial Working In Partial TrustTrust

demodemo

Page 20: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Changing Policy

Done by AdministratorsNot designed for end users

Also deployable via MSI

Limit what you trustDesign for “Least Permissions”

Trust a particular server, strong name

Page 21: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Changing PolicyChanging Policy

demodemo

Page 22: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

AllowPartiallyTrustedCallers

Required when elevating permissions

Signals developer thought about trust

using System.Security;

[assembly:AllowPartiallyTrustedCallers()]

Imports System.Security

<assembly:AllowPartiallyTrustedCallers()>

Page 23: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Summary

No touch deploymentGreat model

Takes some effort to get right

Design security in!Set policies up-front

Run in Partial Trust when possible

Use trusted core for extended functionality

Page 24: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Community ResourcesCommunity Resources

Windows Form.Nethttp://www.windowsforms.net

Windows Forms Forumshttp://www.windowsforms.net/Forums/

MSDN Support Databasehttp://msdn.microsoft.com/support/

Page 25: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

Community Resources

Community Resourceshttp://www.microsoft.com/communities/default.mspx

Most Valuable Professional (MVP)http://www.mvp.support.microsoft.com/

NewsgroupsConverse online with Microsoft Newsgroups, including Worldwidehttp://www.microsoft.com/communities/newsgroups/default.mspx

User GroupsMeet and learn with your peershttp://www.microsoft.com/communities/usergroups/default.mspx

Page 27: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

evaluationsevaluations

Page 28: DEV396 Windows Forms: No Touch Deployment Tips and Tricks Jamie Cool Program Manager.NET Client Microsoft Corporation

© 2003 Microsoft Corporation. All rights reserved.© 2003 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.