SlideShare a Scribd company logo
Agenda 1. Desktop Bridge overview
2. The conversion process
3. Enhancing a packaged app
4. Expanding a packaged app
5. Migrating a packaged app
6. Reach all the devices with UWP
Classic desktop applications
• Based on the Windows APIs (Win32) included in Windows
• They are available only in the full edition of Windows for PC and tablets
• They can be developed with multiple technologies and platforms, including
non-Microsoft ones:
o Windows Forms
o WPF
o C++
o Java
o Delphi
o And many more…
User experience challenges
today
Getting the right software
Finding the right, trusted installer
Chain-installers (adware)
Staying up-to-date
Software vendor challenges
today
Maintaining installer tech
Providing auto-updates
“DLL Hell”
Modernization
Trustworthy distribution
Monetization/licensing
Universal Windows Platform
Modern deployment technology
• Streamlined developer experience
o No more setup authoring
o Only trusted apps are able to install
o Optimized updates/downloads
• Great user experience
o No elevation/user account control
o Always up-to-date
o Clean uninstallation, minimal system impact
• Ready for the enterprise
o Distribute through sideloading, MDM or
Windows Store for Business
A modern packaging system
9
• The Win32 process runs in an isolated
environment, but not in a sandbox like
UWP apps
• Special access to the registry:
o Write operations are stored into a binary
file
o Reading operations are made against a
merge of the system registry and the
binary file
• The AppData folder is mapped with the
same folder used by UWP apps for
local storage, which is isolated
The manifest file
A XML file that describes the features of the application, like:
• The entry point
• The identity of the application (name, publisher, CPU architecture,
etc.)
• The capabilities
• The extensions (both special Desktop Bridge and UWP extensions)
• The visual layout of the default assets (tile, store logo, taskbar icon,
etc.)
It’s a declarative and easier model to handle compared to a
regular desktop application
File system redirection
• Converted apps are installed in C:Program FilesWindowsApps:
C:Program FilesWindowsAppsMicrosoft.DesktopAppConverter_8wekyb3d8bbwe
• App data is redirected to C:Users<username>AppDataLocalPackages
C:Users<username>AppDataLocalPackagesMicrosoft.DesktopAppConverter_
8wekyb3d8bbweLocalCache
The Virtual File System
12
• To solve the “DLL hell” problem, every converted app has a special folder
called VFS, which maps all the system folders (like Program Files, Windows,
System32, etc.)
• When a converted app is running, it will look for 3rd party dependencies in the
VFS folder and not in the system folders
• This way, the package deployment can’t overwrite existing DLLs or
dependencies used by other apps
The requirements
13
• A converted application always runs in the user context and can’t elevate
itself as admin
• Your app can’t install a kernel-mode driver or a Windows service
• Your app can’t modify the HKEY_LOCAL_MACHINE (HKLM) registry hive
(since it’s outside the user’s scope)
• Your app can’t write data in the installation folder
• Due to file system redirection and registry virtualization, your app can’t
write in AppData or in the registry with the goal of sharing data with
another app
Special extensions
14
Thanks to a set of special manifest extensions, you can still implement most of
the typical features of a desktop app, but in a better and simpler way:
• Startup tasks
• Execution aliases
• Protocol association
• Files and File Explorer integration
• Files preview integration in File Explorer (for example, thumbnails)
• Firewall rules
• Expose COM objects to other applications
Demo: The deployment
experience of a converted
desktop application
Multiple options to convert a desktop application
17
• Desktop App Converter from Microsoft starting from an installer or a self-
executable application
• Packaging with Visual Studio 2017
• 3rd party tools to create installers like:
o InstallShield
o Wix
o Advanced Installer
o RAD Studio for Delphi
o InstallAware
Desktop App Converter and installers
18
• The Desktop App Converter is a command line tool based on a set of
PowerShell scripts, which leverages the Container feature added in the
Anniversary Update
• It’s available from the Store: https://aka.ms/converter
• It requires a base image that matches your current Windows build, that can
be downloaded from https://aka.ms/converterimages
• You need the Windows 10 SDK installed:
https://go.microsoft.com/fwlink/?linkid=821375
Sample DAC command
DesktopAppConverter
-Installer "FlightTracker.msi"
-Destination "C:FlightTracker-AppX"
-PackageName "FlightTracker"
-Publisher "CN=AppConsult"
-Version "1.0.0.0"
-MakeAppx -Sign -Verbose
Installer requirements
• If it’s a MSI installer, DAC is able to handle it automatically
• If it’s made with another technology, it must support silent installation and you
need to specify the parameter to trigger it using
-InstallerArguments
DesktopAppConverter
-Installer "FlightTracker-Setup.exe"
-InstallerArguments "/S"
-Destination "C:FlightTracker-AppX"
-PackageName "FlightTracker"
-Publisher "CN=AppConsult"
-Version "1.0.0.0"
-MakeAppx -Sign -Verbose
Dealing with the CPU architecture
• By default, if the app isn’t compiled for a specific CPU architecture, the DAC will
generate a x64 package
• If you don’t need to address such a big memory space, it’s better to generate a x86
package (or even better, both) to reach a broader range of devices
DesktopAppConverter
-Installer "FlightTracker.msi"
-PackageArch "x86"
-Destination "C:FlightTracker-AppX"
-PackageName "FlightTracker"
-Publisher "CN=AppConsult"
-Version "1.0.0.0"
-MakeAppx -Sign -Verbose
What you get as output?
A folder with the app package version of your desktop app
• The app manifest
• Virtual file system
• Binary registry file
• Assets
• Resources for Windows 10 scaling support
DAC and manual conversion
• The Desktop App Converter can convert also a standalone application stored
in a folder (executable with its dependencies)
• In this case, the Base Image and the Windows Container feature aren’t
required
• The output is the same as when you use the DAC with a traditional installer,
except for the binary registry file and the virtual file system folder
Sample manual DAC command
DesktopAppConverter
-Installer "C:FlightTracker"
-Destination "C:FlightTracker-AppX"
-AppExecutable "FlightTracker.exe"
-PackageName "FlightTracker"
-Publisher "CN=AppConsult"
-Version "1.0.0.0"
-MakeAppx -Sign -Verbose
Demo: Desktop App
Converter with a MSI installer
Keep a converted project up-to-date
• Typically, the Desktop App Converter is executed just once and it’s the
starting point of the process
• You leverage the output folder and reiterate on it every time you need to
release a new update with some changes, like:
o An updated executable
o One or multiples updated or added DLLs
o One or multiples updated or added images or assets
o New extensions declared in the manifest
• Exception: if you have updated the installer to add new registry keys, 3rd
party dependencies, expose COM objects, etc. you need to run DAC again to
capture all the changes
MakeAppX
• MakeAppX is a command line tool included in the Windows 10 SDK that can
generate an app package starting from the output of the DAC
• With the –MakeAppX parameter, the DAC can generate the package
automatically as output of the process
• You can manually generate the package starting from the output folder of
the DAC every time you make some changes
makeappx pack –d "PackageFiles" –p "MyApp.appx" -l
SignTool
• If you want to deploy your app manually or in an enterprise environment, the
app must be signed with a trusted certificate
• It can either be a certificate purchase from a certification authority or a self-
generated certificated trusted by all the devices in your company
• If you want to publish the app on the Windows Store or Windows Store for
Business, you don’t need to sign it
• For testing purposes, you can use the –Sign parameter with the DAC to
generate a testing certificate and an already signed app package
• If you have manually generated the package, you can use a command line
tool called SignTool included in the Windows 10 SDK to sign the AppX
Verify the package
• If you are on the Anniversary Update, don’t use the Windows App
Certification Kit (WACK) to certify a converted app, since it doesn’t support
them
• If you are on the Creators Update and you have installed the matching SDK,
WACK properly support testing and identifying potential issues in a
converted desktop app
Demo: The WACK report
Other conversion options
• If you have already an installer for your application created with any of these
tools, you can export an app package directly without using the Desktop App
Converter:
oInstallShield
oWix
oAdvanced Installer
oRAD Studio
oInstallAware
Demo: Exporting an app
package using Advanced
Installer by Caphyion
Migrate at your own pace
app
Enhance
• You can start to leverage some
specific Windows 10 features
• New generation’s UWP APIs to
perform tasks like sending
notifications, updating the live tile or
leverage speech services.
• Keep customers engaged and prompt
them to return to the app thanks to
the new features
Supported UWP APIs
• Converted desktop apps can use a wide range of Universal Windows Platform
(UWP) APIs, even if they have not fully transitioned to a UWP app
• Some UWP APIs available to full desktop applications are not supported for
converted apps. If your desktop application used UWP APIs before conversion, you
should verify those APIs are still supported.
• Supported API’s
o You can view APIs newly supported in converted apps or APIs supported in both
converted apps and desktop applications at
https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-supported-
api#new
Welcome Visual Studio 2017!
You can add to your existing desktop solution a JavaScript project which will help
you to:
• Generate the app packages
• Edit the manifest using the visual editor
• Generate assets for all the supported Windows scaling factors
Desktop Bridge Debugging Project: a Visual Studio extension to launch and
debug a desktop as converted
https://aka.ms/bridgedebugging
Desktop Bridge Helpers
• Goal: keep the same code base both for the converted and the native app
• Open source library based on a C++ method exposed by the Windows kernel
which checks if the app has an identity
• It can detect if the app is running as converted or as native
https://aka.ms/bridgehelpers
DesktopBridge.Helpers bridgeHelpers = new DesktopBridge.Helpers();
if (bridgeHelpers.IsRunningAsUwp())
{
//show a toast notification
}
Demo: Enhancing a Windows
Forms app to display a toast
notification
Expand
Demo: Expanding a Windows
Forms app to use a
background task
Migrate
Demo: a UWP app which
invokes a Win32 process on
desktop
Reach all
Demo: moving all your code
to UWP
Bring and distribute your dekstop applications on the Universal Windows Platform with the Desktop Bridge
Bring and distribute your dekstop applications on the Universal Windows Platform with the Desktop Bridge

More Related Content

What's hot

Architecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStockArchitecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStock
Daniel Barker
 
M365 global developer bootcamp 2019 PA
M365 global developer bootcamp 2019  PAM365 global developer bootcamp 2019  PA
M365 global developer bootcamp 2019 PA
Thomas Daly
 
M365 global developer bootcamp 2019
M365 global developer bootcamp 2019M365 global developer bootcamp 2019
M365 global developer bootcamp 2019
Thomas Daly
 
Windows 10 UWP Development Overview
Windows 10 UWP Development OverviewWindows 10 UWP Development Overview
Windows 10 UWP Development Overview
DevGAMM Conference
 
Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development
Pei-Hsuan Hsieh
 
Side loading
Side loadingSide loading
Side loading
Ashish Agrawal
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
Pascal Rapicault
 
Homestead demo
Homestead demoHomestead demo
Homestead demo
Saranga Tripathy
 
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenIBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
Paul Withers
 
Universal Windows Platform Overview
Universal Windows Platform OverviewUniversal Windows Platform Overview
Universal Windows Platform Overview
Joshua Copeland
 
Code quality tools
Code quality toolsCode quality tools
Code quality tools
Lena Petsenchuk
 
Develop android application with mono for android
Develop android application with mono for androidDevelop android application with mono for android
Develop android application with mono for android
Nicko Satria Consulting
 
Application Virtualization, University of New Hampshire
Application Virtualization, University of New HampshireApplication Virtualization, University of New Hampshire
Application Virtualization, University of New Hampshire
Tony Austwick
 
Components lab
Components labComponents lab
Components lab
Joanne Scouler
 
20150728 100분만에 배우는 windows 10 앱 개발
20150728 100분만에 배우는 windows 10 앱 개발20150728 100분만에 배우는 windows 10 앱 개발
20150728 100분만에 배우는 windows 10 앱 개발
영욱 김
 
Hp Loadrunner
Hp LoadrunnerHp Loadrunner
Hp Loadrunner
guestb3416f
 
2018.02.11 installation guide rhapsody in c and cpp
2018.02.11 installation guide rhapsody in c and cpp2018.02.11 installation guide rhapsody in c and cpp
2018.02.11 installation guide rhapsody in c and cpp
Frank Braun
 
Writing first-hudson-plugin
Writing first-hudson-pluginWriting first-hudson-plugin

What's hot (18)

Architecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStockArchitecting the Future: Abstractions and Metadata - CodeStock
Architecting the Future: Abstractions and Metadata - CodeStock
 
M365 global developer bootcamp 2019 PA
M365 global developer bootcamp 2019  PAM365 global developer bootcamp 2019  PA
M365 global developer bootcamp 2019 PA
 
M365 global developer bootcamp 2019
M365 global developer bootcamp 2019M365 global developer bootcamp 2019
M365 global developer bootcamp 2019
 
Windows 10 UWP Development Overview
Windows 10 UWP Development OverviewWindows 10 UWP Development Overview
Windows 10 UWP Development Overview
 
Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development
 
Side loading
Side loadingSide loading
Side loading
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Homestead demo
Homestead demoHomestead demo
Homestead demo
 
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages HeavenIBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
Universal Windows Platform Overview
Universal Windows Platform OverviewUniversal Windows Platform Overview
Universal Windows Platform Overview
 
Code quality tools
Code quality toolsCode quality tools
Code quality tools
 
Develop android application with mono for android
Develop android application with mono for androidDevelop android application with mono for android
Develop android application with mono for android
 
Application Virtualization, University of New Hampshire
Application Virtualization, University of New HampshireApplication Virtualization, University of New Hampshire
Application Virtualization, University of New Hampshire
 
Components lab
Components labComponents lab
Components lab
 
20150728 100분만에 배우는 windows 10 앱 개발
20150728 100분만에 배우는 windows 10 앱 개발20150728 100분만에 배우는 windows 10 앱 개발
20150728 100분만에 배우는 windows 10 앱 개발
 
Hp Loadrunner
Hp LoadrunnerHp Loadrunner
Hp Loadrunner
 
2018.02.11 installation guide rhapsody in c and cpp
2018.02.11 installation guide rhapsody in c and cpp2018.02.11 installation guide rhapsody in c and cpp
2018.02.11 installation guide rhapsody in c and cpp
 
Writing first-hudson-plugin
Writing first-hudson-pluginWriting first-hudson-plugin
Writing first-hudson-plugin
 

Similar to Bring and distribute your dekstop applications on the Universal Windows Platform with the Desktop Bridge

Apache cordova
Apache cordovaApache cordova
Apache cordova
Carlo Bernaschina
 
Key Steps in Developing .NET Core Applications
Key Steps in Developing .NET Core ApplicationsKey Steps in Developing .NET Core Applications
Key Steps in Developing .NET Core Applications
Damir Dobric
 
W1.pptx
W1.pptxW1.pptx
Azure App Service for Windows Container
Azure App Service for Windows ContainerAzure App Service for Windows Container
Azure App Service for Windows Container
Krunal Trivedi
 
Android app upload
Android app uploadAndroid app upload
Apache Cordova phonegap plugins for mobile app development
Apache Cordova phonegap plugins for mobile app developmentApache Cordova phonegap plugins for mobile app development
Apache Cordova phonegap plugins for mobile app development
webprogr.com
 
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
Roel van Bueren
 
Presentation[1]
Presentation[1]Presentation[1]
Presentation[1]
Palash Debnath
 
C installation guide
C installation guideC installation guide
C installation guide
vikas mishra
 
1 app 2 developers 3 servers
1 app 2 developers 3 servers1 app 2 developers 3 servers
1 app 2 developers 3 servers
Mark Myers
 
Developing for Android-Types of Android Application
Developing for Android-Types of Android ApplicationDeveloping for Android-Types of Android Application
Developing for Android-Types of Android Application
Nandini Prabhu
 
Sequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 DenverSequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 Denver
RyanWillDotcom
 
Compile open cpn on windows
Compile open cpn on windowsCompile open cpn on windows
Compile open cpn on windows
randikaucsc
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
Ivano Malavolta
 
N-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and SecurityN-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and Security
Peter Gfader
 
CROSS-OS DEVELOPMENT PLATFORM ADVANTAGES
CROSS-OS DEVELOPMENT PLATFORM ADVANTAGESCROSS-OS DEVELOPMENT PLATFORM ADVANTAGES
CROSS-OS DEVELOPMENT PLATFORM ADVANTAGES
MapuSoft
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
Oren Novotny
 
Apache Cordova
Apache CordovaApache Cordova
Apache Cordova
Ivano Malavolta
 
Using SCCM 2012 r2 to Patch Linux, UNIX and Macs
Using SCCM 2012 r2 to Patch Linux, UNIX and MacsUsing SCCM 2012 r2 to Patch Linux, UNIX and Macs
Using SCCM 2012 r2 to Patch Linux, UNIX and Macs
Lumension
 
Windows 10 - tools-tools-tools
Windows 10 - tools-tools-toolsWindows 10 - tools-tools-tools
Windows 10 - tools-tools-tools
Roel van Bueren
 

Similar to Bring and distribute your dekstop applications on the Universal Windows Platform with the Desktop Bridge (20)

Apache cordova
Apache cordovaApache cordova
Apache cordova
 
Key Steps in Developing .NET Core Applications
Key Steps in Developing .NET Core ApplicationsKey Steps in Developing .NET Core Applications
Key Steps in Developing .NET Core Applications
 
W1.pptx
W1.pptxW1.pptx
W1.pptx
 
Azure App Service for Windows Container
Azure App Service for Windows ContainerAzure App Service for Windows Container
Azure App Service for Windows Container
 
Android app upload
Android app uploadAndroid app upload
Android app upload
 
Apache Cordova phonegap plugins for mobile app development
Apache Cordova phonegap plugins for mobile app developmentApache Cordova phonegap plugins for mobile app development
Apache Cordova phonegap plugins for mobile app development
 
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
SLBdiensten: Windows 10 deployment met Microsoft Deployment Toolkit en Setup ...
 
Presentation[1]
Presentation[1]Presentation[1]
Presentation[1]
 
C installation guide
C installation guideC installation guide
C installation guide
 
1 app 2 developers 3 servers
1 app 2 developers 3 servers1 app 2 developers 3 servers
1 app 2 developers 3 servers
 
Developing for Android-Types of Android Application
Developing for Android-Types of Android ApplicationDeveloping for Android-Types of Android Application
Developing for Android-Types of Android Application
 
Sequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 DenverSequence Like a Boss - BriForum 2015 Denver
Sequence Like a Boss - BriForum 2015 Denver
 
Compile open cpn on windows
Compile open cpn on windowsCompile open cpn on windows
Compile open cpn on windows
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
 
N-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and SecurityN-Tier Application with Windows Forms - Deployment and Security
N-Tier Application with Windows Forms - Deployment and Security
 
CROSS-OS DEVELOPMENT PLATFORM ADVANTAGES
CROSS-OS DEVELOPMENT PLATFORM ADVANTAGESCROSS-OS DEVELOPMENT PLATFORM ADVANTAGES
CROSS-OS DEVELOPMENT PLATFORM ADVANTAGES
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
 
Apache Cordova
Apache CordovaApache Cordova
Apache Cordova
 
Using SCCM 2012 r2 to Patch Linux, UNIX and Macs
Using SCCM 2012 r2 to Patch Linux, UNIX and MacsUsing SCCM 2012 r2 to Patch Linux, UNIX and Macs
Using SCCM 2012 r2 to Patch Linux, UNIX and Macs
 
Windows 10 - tools-tools-tools
Windows 10 - tools-tools-toolsWindows 10 - tools-tools-tools
Windows 10 - tools-tools-tools
 

Recently uploaded

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 

Recently uploaded (20)

Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 

Bring and distribute your dekstop applications on the Universal Windows Platform with the Desktop Bridge

  • 1.
  • 2. Agenda 1. Desktop Bridge overview 2. The conversion process 3. Enhancing a packaged app 4. Expanding a packaged app 5. Migrating a packaged app 6. Reach all the devices with UWP
  • 3. Classic desktop applications • Based on the Windows APIs (Win32) included in Windows • They are available only in the full edition of Windows for PC and tablets • They can be developed with multiple technologies and platforms, including non-Microsoft ones: o Windows Forms o WPF o C++ o Java o Delphi o And many more…
  • 4. User experience challenges today Getting the right software Finding the right, trusted installer Chain-installers (adware) Staying up-to-date
  • 5. Software vendor challenges today Maintaining installer tech Providing auto-updates “DLL Hell” Modernization Trustworthy distribution Monetization/licensing
  • 7. Modern deployment technology • Streamlined developer experience o No more setup authoring o Only trusted apps are able to install o Optimized updates/downloads • Great user experience o No elevation/user account control o Always up-to-date o Clean uninstallation, minimal system impact • Ready for the enterprise o Distribute through sideloading, MDM or Windows Store for Business
  • 8.
  • 9. A modern packaging system 9 • The Win32 process runs in an isolated environment, but not in a sandbox like UWP apps • Special access to the registry: o Write operations are stored into a binary file o Reading operations are made against a merge of the system registry and the binary file • The AppData folder is mapped with the same folder used by UWP apps for local storage, which is isolated
  • 10. The manifest file A XML file that describes the features of the application, like: • The entry point • The identity of the application (name, publisher, CPU architecture, etc.) • The capabilities • The extensions (both special Desktop Bridge and UWP extensions) • The visual layout of the default assets (tile, store logo, taskbar icon, etc.) It’s a declarative and easier model to handle compared to a regular desktop application
  • 11. File system redirection • Converted apps are installed in C:Program FilesWindowsApps: C:Program FilesWindowsAppsMicrosoft.DesktopAppConverter_8wekyb3d8bbwe • App data is redirected to C:Users<username>AppDataLocalPackages C:Users<username>AppDataLocalPackagesMicrosoft.DesktopAppConverter_ 8wekyb3d8bbweLocalCache
  • 12. The Virtual File System 12 • To solve the “DLL hell” problem, every converted app has a special folder called VFS, which maps all the system folders (like Program Files, Windows, System32, etc.) • When a converted app is running, it will look for 3rd party dependencies in the VFS folder and not in the system folders • This way, the package deployment can’t overwrite existing DLLs or dependencies used by other apps
  • 13. The requirements 13 • A converted application always runs in the user context and can’t elevate itself as admin • Your app can’t install a kernel-mode driver or a Windows service • Your app can’t modify the HKEY_LOCAL_MACHINE (HKLM) registry hive (since it’s outside the user’s scope) • Your app can’t write data in the installation folder • Due to file system redirection and registry virtualization, your app can’t write in AppData or in the registry with the goal of sharing data with another app
  • 14. Special extensions 14 Thanks to a set of special manifest extensions, you can still implement most of the typical features of a desktop app, but in a better and simpler way: • Startup tasks • Execution aliases • Protocol association • Files and File Explorer integration • Files preview integration in File Explorer (for example, thumbnails) • Firewall rules • Expose COM objects to other applications
  • 15. Demo: The deployment experience of a converted desktop application
  • 16.
  • 17. Multiple options to convert a desktop application 17 • Desktop App Converter from Microsoft starting from an installer or a self- executable application • Packaging with Visual Studio 2017 • 3rd party tools to create installers like: o InstallShield o Wix o Advanced Installer o RAD Studio for Delphi o InstallAware
  • 18. Desktop App Converter and installers 18 • The Desktop App Converter is a command line tool based on a set of PowerShell scripts, which leverages the Container feature added in the Anniversary Update • It’s available from the Store: https://aka.ms/converter • It requires a base image that matches your current Windows build, that can be downloaded from https://aka.ms/converterimages • You need the Windows 10 SDK installed: https://go.microsoft.com/fwlink/?linkid=821375
  • 19. Sample DAC command DesktopAppConverter -Installer "FlightTracker.msi" -Destination "C:FlightTracker-AppX" -PackageName "FlightTracker" -Publisher "CN=AppConsult" -Version "1.0.0.0" -MakeAppx -Sign -Verbose
  • 20. Installer requirements • If it’s a MSI installer, DAC is able to handle it automatically • If it’s made with another technology, it must support silent installation and you need to specify the parameter to trigger it using -InstallerArguments DesktopAppConverter -Installer "FlightTracker-Setup.exe" -InstallerArguments "/S" -Destination "C:FlightTracker-AppX" -PackageName "FlightTracker" -Publisher "CN=AppConsult" -Version "1.0.0.0" -MakeAppx -Sign -Verbose
  • 21. Dealing with the CPU architecture • By default, if the app isn’t compiled for a specific CPU architecture, the DAC will generate a x64 package • If you don’t need to address such a big memory space, it’s better to generate a x86 package (or even better, both) to reach a broader range of devices DesktopAppConverter -Installer "FlightTracker.msi" -PackageArch "x86" -Destination "C:FlightTracker-AppX" -PackageName "FlightTracker" -Publisher "CN=AppConsult" -Version "1.0.0.0" -MakeAppx -Sign -Verbose
  • 22. What you get as output? A folder with the app package version of your desktop app • The app manifest • Virtual file system • Binary registry file • Assets • Resources for Windows 10 scaling support
  • 23.
  • 24. DAC and manual conversion • The Desktop App Converter can convert also a standalone application stored in a folder (executable with its dependencies) • In this case, the Base Image and the Windows Container feature aren’t required • The output is the same as when you use the DAC with a traditional installer, except for the binary registry file and the virtual file system folder
  • 25. Sample manual DAC command DesktopAppConverter -Installer "C:FlightTracker" -Destination "C:FlightTracker-AppX" -AppExecutable "FlightTracker.exe" -PackageName "FlightTracker" -Publisher "CN=AppConsult" -Version "1.0.0.0" -MakeAppx -Sign -Verbose
  • 26. Demo: Desktop App Converter with a MSI installer
  • 27.
  • 28. Keep a converted project up-to-date • Typically, the Desktop App Converter is executed just once and it’s the starting point of the process • You leverage the output folder and reiterate on it every time you need to release a new update with some changes, like: o An updated executable o One or multiples updated or added DLLs o One or multiples updated or added images or assets o New extensions declared in the manifest • Exception: if you have updated the installer to add new registry keys, 3rd party dependencies, expose COM objects, etc. you need to run DAC again to capture all the changes
  • 29. MakeAppX • MakeAppX is a command line tool included in the Windows 10 SDK that can generate an app package starting from the output of the DAC • With the –MakeAppX parameter, the DAC can generate the package automatically as output of the process • You can manually generate the package starting from the output folder of the DAC every time you make some changes makeappx pack –d "PackageFiles" –p "MyApp.appx" -l
  • 30. SignTool • If you want to deploy your app manually or in an enterprise environment, the app must be signed with a trusted certificate • It can either be a certificate purchase from a certification authority or a self- generated certificated trusted by all the devices in your company • If you want to publish the app on the Windows Store or Windows Store for Business, you don’t need to sign it • For testing purposes, you can use the –Sign parameter with the DAC to generate a testing certificate and an already signed app package • If you have manually generated the package, you can use a command line tool called SignTool included in the Windows 10 SDK to sign the AppX
  • 31. Verify the package • If you are on the Anniversary Update, don’t use the Windows App Certification Kit (WACK) to certify a converted app, since it doesn’t support them • If you are on the Creators Update and you have installed the matching SDK, WACK properly support testing and identifying potential issues in a converted desktop app
  • 32. Demo: The WACK report
  • 33. Other conversion options • If you have already an installer for your application created with any of these tools, you can export an app package directly without using the Desktop App Converter: oInstallShield oWix oAdvanced Installer oRAD Studio oInstallAware
  • 34. Demo: Exporting an app package using Advanced Installer by Caphyion
  • 35. Migrate at your own pace app
  • 36.
  • 37. Enhance • You can start to leverage some specific Windows 10 features • New generation’s UWP APIs to perform tasks like sending notifications, updating the live tile or leverage speech services. • Keep customers engaged and prompt them to return to the app thanks to the new features
  • 38. Supported UWP APIs • Converted desktop apps can use a wide range of Universal Windows Platform (UWP) APIs, even if they have not fully transitioned to a UWP app • Some UWP APIs available to full desktop applications are not supported for converted apps. If your desktop application used UWP APIs before conversion, you should verify those APIs are still supported. • Supported API’s o You can view APIs newly supported in converted apps or APIs supported in both converted apps and desktop applications at https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-supported- api#new
  • 39. Welcome Visual Studio 2017! You can add to your existing desktop solution a JavaScript project which will help you to: • Generate the app packages • Edit the manifest using the visual editor • Generate assets for all the supported Windows scaling factors Desktop Bridge Debugging Project: a Visual Studio extension to launch and debug a desktop as converted https://aka.ms/bridgedebugging
  • 40. Desktop Bridge Helpers • Goal: keep the same code base both for the converted and the native app • Open source library based on a C++ method exposed by the Windows kernel which checks if the app has an identity • It can detect if the app is running as converted or as native https://aka.ms/bridgehelpers DesktopBridge.Helpers bridgeHelpers = new DesktopBridge.Helpers(); if (bridgeHelpers.IsRunningAsUwp()) { //show a toast notification }
  • 41. Demo: Enhancing a Windows Forms app to display a toast notification
  • 43. Demo: Expanding a Windows Forms app to use a background task
  • 45. Demo: a UWP app which invokes a Win32 process on desktop
  • 47. Demo: moving all your code to UWP