23

Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Embed Size (px)

Citation preview

Page 1: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform
Page 2: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

#Build2016

Converting your desktop app to use the Universal Windows Platform (Project Centennial)John SheehanDistinguished Engineer

B829

Page 3: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

What is Project Centennial?Improving the Windows platform for all developersConvert desktop apps to the Universal Windows deployment technology

Keep your current Win32/.NET code running

Code targets Windows 10 and Windows 7 PCs

Add Universal Windows components over time

Monetize via Windows Store or other distribution of choice

Page 4: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Developer Workflow

MSI

Desktop App ConverterConverts existing desktop installerResults in a packaged app with UWP manifest

Test, Update and EvolveMake compatible code changes that go into both MSI and app packageEvolve app package to take advantage of the Universal Windows Platform

Publish and DistributeDistribute the app package via sideloading, MDM or the Windows Store*

AppX

*Pending availability

Page 5: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Classic Desktop ApplicationWin32/.NET code baseMSI installerRuns in a desktop process

Step 0 – Win32 Desktop App

Classic Windows App

Page 6: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Universal App Package

Immediate Benefits:Modern deployment technology for all appsSeamless updates, clean uninstallMonetize via Windows Store or other distribution of choiceRuns your current codeSmall amount of code changes needed (if any)

Step 1 – Convert the App

Classic Windows App

Page 7: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Demo

Evernote – Conversion and Deployment

Page 8: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

How does it work?DeploymentUses Universal Windows Platform deployment stackExtensions for required Win32 extension pointsShell extensions (e.g. file type associations)

Solving “DLL Hell” and “Registry Bloat”Registry redirection / mergingFilesystem redirection / mergingWrite redirect for certain directoriesSame code will continue work on Windows 7, 8, etc.

Page 9: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Bridge to the Universal Windows PlatformAt this point your app already hasModern deploymentActivation via Tiles, file types or URI protocolsApp Identity access to more UWP API surfaceUWP App Model

What else does this enable? Short answer: Anything a UWP app can do !

Page 10: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Feature Examples:Live Tile supportActionable NotificationsCortanaetc.

Step 2 – Call UWP APIs

Universal Windows API

Classic Windows App

Universal App Package

Page 11: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Continue the Migration to UWPDo anything a UWP app can doTake advantage of more UWP APIsTake advantage of app services, background tasks & triggersMigrate UI to XAML

Configuration

Security Management

Updates

Natural User Inputs

One SDK + Tooling

Cloud Services

One Store +One Dev Center

Adaptive User

Interface

Holographic Xbox

Devices +IoT

Surface HubMobilePC

Page 12: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Demo

Adding Live Tiles

Page 13: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Step 3 – Add a UWP Component

Feature Examples:XAML UI front endBackground tasksFile Picker UI

Runs in the App ContainerCommunication via AppService Universal Windows App

Classic Windows App

Universal App Package

Page 14: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Desktop & App Container processesCurrent code running in Desktop processUWP app code runs in App ContainerActivate Desktop process from App Container and vice-versaInter process communication (via AppService)Activat

e

Activate

DesktopProcess

App ContainerProcess

Page 15: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Demo

Communicating between UWP and Desktop components

Page 16: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Step 4 – Migrate code to UWP

Move UWP Compatible code/components into the App Container

Universal Windows App

Classic Windows App

Universal App Package

Page 17: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Step 5 – Fully UWP

Move remaining code into the App ContainerRun everywherePCMobileXbox OneHoloLensetc.

Universal App Package

Universal Windows App

Page 18: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Complete Migration to UWPClean up/replace non-compliant codeMore Win32 APIs supported in the AppContainerMove remaining code into the App ContainerRun everywhere (PC, phone, Xbox One, HoloLens, etc.)

Page 19: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Demo

Completing the migration to UWP

Page 20: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Call to Action - http://aka.ms/desktopbridge

Upcoming Windows Insider Preview build will deliver the bits

Meet us in the “Ask The Experts” area

HELLOJohnI

am

Bring your own installer to the “App Consult Area”

Page 21: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Share Your Story for Challenge PointsGive us 3 minutes of feedback about your work right after this session at the Flash Voting sign.Join in on 15-30 minutes in depth feedback sessions at the Visual Studio: Share Your Story booth.Register in 2 minutes for Visual Studio feedback opportunities after build at http://aka.ms/devtodev.

Page 22: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

Please Complete An Evaluation FormYour input is important!

or

Page 23: Build 2016 - B829 - Project Centennial: Bringing Existing Desktop Applications to the Universal Windows Platform

© 2016 Microsoft Corporation. All rights reserved.