Webinar: Windows 10 Anniversary Edition Support in Delphi

Posted by on in Programming

Among the many new features of Windows 10 Anniversary Edition there is one of particular interest to Delphi and C++Builder developers: the Windows Desktop Bridge, also known as Project Centennial.

This is a way to "convert" existing WinAPI applications into first-class UWP (Universal Windows Platform) applications, that can be executed "safely" on Windows 10 and distributed on the Windows 10 store (eventually).

Join Delphi Product Manager Marco Cantu to learn the latest about to leverage this technology in your Delphi apps.

Replay


https://www.youtube.com/watch?v=v43pNK1LNSw

Resources

 

 

 



About
Gold User, Rank: 7, Points: 457
Delphi and RAD Studio Product Manager at Embarcadero.

Comments

  • George Birbilis
    George Birbilis Thursday, 22 September 2016

    https://msdn.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root
    COM is supported inside the same AppX package, so a Delphi COM server could talk to a C# .NET-based app in the same AppX package which in turn talks via a UWP AppService to a UWP app shipped inside the same AppX. They hint that in the future one might able to even escape the boundaries of the AppX and register COM objects from inside a Desktop app shipped via the Store in AppX format for other classic Windows apps shipped separately to call upon
    "In the current release, your app cannot expose COM objects or GAC assemblies for use by processes originating from executables external to your AppX package. Processes from within the package can register and use COM objects and GAC assemblies as normal, but they will not be visible externally. This means interop scenarios like OLE will not function if invoked by external processes."

  • George Birbilis
    George Birbilis Thursday, 22 September 2016

    judging from the part at time 27:27 from video https://channel9.msdn.com/Events/Build/2016/B829
    one could add a Win32 DLL (say in C#/C++) that consumes an AppService exposed by their UWP code. That DLL could be called by say a Delphi app that has been converted with Desktop Bridge and added in the Visual Studio solution. Then the UWP part and the Delphi part could talk to each other and have the UWP part call APIs that are UWP-only. The video shows this with a .NET app, but using a DLL that Delphi could connect to shouldn't be a problem. Even for .NET DLLs there is third party support for Delphi to call into from what I understand (so that one doesn't have to do their own plumbing with P/Invoke etc., not that it is that hard either: https://www.google.gr/search?q=pinvoke+.net)

  • George Birbilis
    George Birbilis Thursday, 22 September 2016

    some very interesting info I just found at
    https://msdn.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extensions
    "You can enhance your converted Desktop application with a wide range of Universal Windows Platform (UWP) APIs. However, in addition to the normal APIs available to all UWP apps, there are some extensions and APIs available only to converted desktop apps. These features focus on scenarios such as launching a process when the user logs on and File Explorer integration, and are designed to smooth the transition between the original desktop app and the converted app package.

    This article describes these extensions and how to use them. Most require manual modification of your converted app's manifest file, which contains declarations about the extensions your app makes use of. To edit the manifest, right-click the Package.appxmanifest file in your Visual Studio solution and select View Code."

  • George Birbilis
    George Birbilis Thursday, 22 September 2016

    Also watch this video:
    https://blogs.windows.com/buildingapps/2016/09/14/apps-built-using-the-desktop-bridge-now-available-in-the-windows-store/
    and read
    https://msdn.microsoft.com/windows/uwp/porting/desktop-to-uwp-deploy-and-debug
    on how you can add some sidecode with Win32 and UWP parts (say in C#, maybe C++ too can be used there) to augment your wrapped app. To talk to your original wrapped native app could use various means of interprocess communication, since both the original part and the addon part you made live in the same isolated environment. Better avoid using the redirected registry file they have though for doing this and I think there is some constraint on which network ports you can use for your custom communication if you use such for IPC (only IANA free range)

    regarding debugging it says:
    "When Microsoft Visual Studio is running "as administrator", the Start Debugging and Start Without Debugging commands will work for a converted app's project, but the launched app will run with medium integrity level. That is, it will not have elevated privileges. To confer administrator privileges onto the launched app, first you need to launch the "as administrator" via a shortcut or a tile. Once the app is running, from an instance of Microsoft Visual Studio running "as administrator", invoke the Attach to Process and select your app's process from the dialog.", which should apply to RAD Studio's debugger too as a method I guess

  • George Birbilis
    George Birbilis Thursday, 22 September 2016

    Desktop Bridge samples repository at https://github.com/Microsoft/DesktopBridgeToUWP-Samples writes:
    Desktop Conversion Extensions is a bridge that enables you to convert your classic desktop application (like Win32, Windows Forms, and WPF) or game to a Universal Windows Platform (UWP) app or game. After conversion, your classic desktop app is packaged, serviced, and deployed in the form of a UWP app package (an .appx or an .appxbundle) targeting Windows 10. There are two parts to the technology that enables desktop apps to be converted to UWP packages. The first is the Desktop App Converter, which takes your existing binaries and repackages them as a UWP package, you can also create the package manually like we show in these samples. Your code is the same, it's just packaged differently. The second piece is comprised of runtime technologies in the Windows Anniversary update that enable a UWP package to have executables that run as full trust instead of in an app container. This technology also gives a converted app a package identity, which is required to use some UWP APIs. For more info on UWP apps, see https://msdn.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide

  • George Birbilis
    George Birbilis Thursday, 22 September 2016

    Useful article from Scott Hanselman:
    http://www.hanselman.com/blog/PuttingMyVB6WindowsAppsInTheWindows10StoreProjectCentennial.aspx

    Copying from there:
    NOTE: Make sure the Identity in the AppxManifest matches the code signing cert's CN=Identity. That's the FULL string from the cert. Otherwise you'll see weird stuff in your Event Viewer in Microsoft|Windows\AppxPackagingOM|Microsoft-Windows-AppxPackaging/Operational like "error 0x8007000B: The app manifest publisher name (CN=HanselmanVB6, O=Hanselman, L=Portland, S=OR, C=USA) must match the subject name of the signing certificate exactly (CN=HanselmanVB6)."

  • Ben B11217
    Ben B11217 Monday, 29 August 2016

    The Webinar date is shown here as Sept 22, But when I click on register, it takes me to the cool apps and case studies on Sept 15.

  • Jim McKeeth
    Jim McKeeth Monday, 29 August 2016

    Sorry, fixed it.

  • Please login first in order for you to submit comments
  • Page :
  • 1