Desktop Bridge: Creators Update

Overview

The creators update is packed with new features for app developers and end users.

These features are designed to delight the developers who are in turn enabled to delight their end users as well as to provide a rich experience.

User Transition & Data Migration

Users will be encouraged to download the store version of their desktop apps. If the user already has the previous desktop version of the app, the transition experience should be as seamless as possible.

As a result, the Creators Update will provide the ability to provide this smooth transition along with some best practices for app developers to follow.

For a detailed blog post on this topic with code samples, please see this blog post.

User Transition: Taskbar Pins & Start Tiles

Many users typically pin their favorite or most used apps to the taskbar pin or the start menu. This enables them to access the app much faster.

With the Creators Update, app developers can re-route the taskbar pins and the start tile shortcuts to point to the store version of the desktop app.

User Transition: File type associations & protocol handlers

The user may choose their favorite app to be the default app for a given file type or protocol. With the Creators Update, the developers can also transition the user's choice to use the store version of the same app.

Data Migration

As best practice, it is recommended for developers to attempt to migrate previous user data from the desktop app, upon first launch of the store version of the same app.

This will delight the users, so they can pick up where they left off.

User Transition: Uninstall previous desktop app

As best practice, it is recommended for developers to offer uninstallation of the previous desktop app upon first launch of the store version of the app. This will help in avoiding user confusion and potential user data corruption.

Keep in mind that the user can refuse the uninstallation of the previous desktop app, so the previous and store version of the app may end up running side-by-side. It is up to the app developer to decide whether or not to block the launch of the store version of the app, until the previous desktop app is uninstalled.

Windows Explorer delight: previews, thumbnails, detailed properties, and grouping by kind

 

Another focus of the Creators Update release was on user delight.

Store version of desktop apps can now take advantage of Windows Explorer delighters to attract users to engage with their apps more.

Preview Handler

Preview handlers are called when an item is selected to show a lightweight, rich, read-only preview of the file's contents in the view's reading pane. This is done without launching the file's associated application.

XML sample:

 <Extensions>
   <Extension Category="windows.fileTypeAssociation">
      <FileTypeAssociation Name="Foo">
         <SupportedFileTypes>
            <FileType>.bar</FileType>
         </SupportedFileTypes>
         <DesktopPreviewHandler Clsid="20000000-0000-0000-0000-000000000001" />
      </FileTypeAssociation>
   </Extension>
</Extensions>

thumbnail-preview

Thumbnail Handler

In Windows Explorer, thumbnails can provide a read-only view inside the file, when the viewing is set to medium icons or higher.

XML sample:

 <Extensions>
   <Extension Category="windows.fileTypeAssociation">
      <FileTypeAssociation Name="Foo">
         <SupportedFileTypes>
            <FileType>.bar</FileType>
         </SupportedFileTypes>
         <ThumbnailHandler Clsid="20000000-0000-0000-0000-000000000001" />
      </FileTypeAssociation>
   </Extension>
</Extensions>

Property Handler

Microsoft Windows Search uses property handlers to extract the values of properties from items and uses the property system schema to determine how a specific property should be indexed.

In addition, property handlers can be used to provide more details about a certain file in the properties dialog or in the details pane.

property

XML sample:

 <Extensions>
   <Extension Category="windows.fileTypeAssociation">
      <FileTypeAssociation Name="Foo">
         <SupportedFileTypes>
            <FileType>.bar</FileType>
         </SupportedFileTypes>
         <DesktopPropertyHandler Clsid="20000000-0000-0000-0000-000000000001" />
      </FileTypeAssociation>
   </Extension>
</Extensions>

Grouping files by their 'kind'

Developers can specify what 'kind' their file types are, which will enable the end users to group their files by their kind in Windows Explorer.

kind

XML sample:

 <uap:Extension Category="windows.fileTypeAssociation">
   <uap:FileTypeAssociation Name="scoobydoo">
      <uap:SupportedFileTypes>
         <uap:FileType>.m4a</uap:FileType>
         <uap:FileType>.mta</uap:FileType>
      </uap:SupportedFileTypes>
      <rescap:KindMap>
         <rescap:Kind value="Item" />
         <rescap:Kind value="Communications" />
         <rescap:Kind value="Task" />
      </rescap:KindMap>
   </uap:FileTypeAssociation>
</uap:Extension>

Support for custom fonts installation by apps

Microsoft Windows Store apps can share their custom fonts with other Windows applications. This is done by making a few simple edits to the application manifest.

XML sample:

 <Extensions>
   <uap4:Extension Category="windows.sharedFonts">
      <uap4:SharedFonts>
         <uap4:Font File="Fonts\JustRealize.ttf" />
         <uap4:Font File="Fonts\JustRealizeBold.ttf" />
      </uap4:SharedFonts>
   </uap4:Extension>
</Extensions>

Public out-of-process COM server support, aka Packaged COM

Developers can now add support for out-of-process COM and OLE extensions support for store version of desktop apps.  This technology is referred to as Packaged COM.  Historically, desktop apps would create COM extensions that other applications could use.  However, in the Windows 10 Anniversary Update release of the Desktop Bridge, an application cannot expose its COM extension points as all registry entries are in its private hive and not exposed publicly to the system.  Packaged COM provides a mechanism for COM & OLE entries to be declared in the manifest while the underlying subsystem handles the activation of the objects while still providing no-impact install behavior. This is a large extension and will be the focus of a future blog post.

Firewall Rules

When apps need the users to add the app as an exception to the firewall, it translates into user confusion, additional user clicks, and/or denial of exception by mistake.

The Windows Security Alert does a good job of trying to educate the user, but it's still one more decision the user must make before they can use their app.

In addition, subsequent app updates will result in the same dialog to pop up and take the user through the same flow.

firewall

With the Creators Update, the developers can register for firewall rules ahead of time, so the users don't have to make a firewall choice prior to launching their apps (including after subsequent app updates).

 

XML sample:

*Please note that this extension needs to be declared at the package level (not at the application level).

 
<Package 
...
xmlns:desktop2="https://schemas.microsoft.com/appx/manifest/desktop/windows10/2"
...>
...
<Extensions>
   <desktop2:Extension Category="windows.firewallRules">
      <desktop2:FirewallRules Executable="foo.exe">
         <desktop2:Rule Direction="in" IPProtocol="TCP" Profile="all"/>
         <desktop2:Rule Direction="in" IPProtocol="UDP" LocalPortMin="1337" LocalPortMax="1338" Profile="domain"/>
         <desktop2:Rule Direction="in" IPProtocol="UDP" LocalPortMin="1337" LocalPortMax="1338" Profile="public"/>
         <desktop2:Rule Direction="out" IPProtocol="UDP" LocalPortMin="1339" LocalPortMax="1340" RemotePortMin="15" RemotePortMax="19" Profile="domainAndPrivate"/>
         <desktop2:Rule Direction="out" IPProtocol="GRE" Profile="private"/>
      </desktop2:FirewallRules>
   </desktop2:Extension>
</Extensions>
</Package>

Other noteworthy features

  • Apps can be pre-installed
  • Messaging Application Programming Interface (MAPI) support
  • Windows App Certification Kit now includes test cases for desktop bridge apps
  • UseURL flag enables apps to directly open files from a URL instead of downloading a local cached version of the file