March 31, 2017 2:00 pm

Desktop Bridge: Creators Update

By / Senior Program Manager

Overview

The Creators Update is packed with new features for app developers and end users that are designed to delight developers who can offer their end users a rich experience.

User transition & data migration

Users are 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 is as seamless as possible.

As a result, the Creators Update will provides a 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 so they can access apps quickly.

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 that developers attempt to migrate previous user data from the desktop app upon first launch of the store version of the same app.

Users will love that they can pick up where they left off.

User transition: uninstall previous desktop app

As best practice, developers should offer uninstallation of the previous desktop app upon first launch of the store version of the app. This helps in avoiding user confusion and potential user data corruption.

Keep in mind 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 satisfaction.

Store versions of desktop apps can now take advantage of Windows Explorer perks to lead users to more frequently engage with their apps.

Preview handler

Preview handlers are triggered when an item is selected to show a lightweight, rich, read-only preview of the file’s contents in the view’s reading pane. You can do this 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 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" Cutoff="20x20" Treatment="Video Sprockets" />
      </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.

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.

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 created COM extensions that other applications could use. However, in the Windows 10 Anniversary Update release of 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 and 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.

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 tries 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 pop up and take the user through the same flow.

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:


<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>

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
  • Use URL flag enables apps to directly open files from a URL instead of downloading a local cached version of the file

Join the conversation

  1. I’m very interested in the new Windows Explorer integration. Are there any examples on GitHub? How would one implement their own property handler?

    • Hi Reinhard,

      There are currently no samples available, but good news is that we are working on providing them in the next few months.

      Also, you would need to implement your own property handler and then register it in the manifest.

      Thanks,
      Arian

  2. What is the schema needed to register an InProcServer32 against a CLSID that can be used with the ThumbnailHandler?

    • Here is an example of how to register an InprocServer32 CLSID (which can be stand-alone or used with ThumbnailHandler, DesktopPropertyHandler, or DesktopPreviewHandler):

      Note that the COM server DLL will be loaded by a surrogate process running with your package’s identity, not by the client process. This does not require any code changes to your COM server DLL, but does mean that the server is running out-of-process to the client.

      See https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-com-surrogateserver for schema details.

        • I tried to include a snippet of XML, but it didn’t render in the comment.

          <!– SurrogateServer Sample

          –>

        • <Extensions>
          <com:Extension Category=”windows.comServer”>
          <com:ComServer>
          <com:SurrogateServer>
          <com:Class Id=”XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”
          DisplayName=”My Thumbnail Handler”
          Path=”foo/bar/baz.dll”
          ThreadingModel=”Both”/>
          </com:SurrogateServer>
          </com:ComServer>
          </com:Extension>
          </Extensions>

  3. For the firewall rules example, where do I put the xml snippets to enable this in a UWP app? Is it in Package.appxmanifest? If so, under what element? Can you provide more details?

    • Hello Muse,

      The XML snippet can go inside the appxmanifest under the element (not under ).

      Does that help?

      Thanks,
      Arian

      • Seems like my reply didn’t parse correctly:
        They should be declared under the “Package” level (not under the “Application” level).