Search code examples
windows-store-appsuwp

Open external application from Universal Windows app


I need to open an external application (Cisco Jabber Video for Telepresence) when a user selects the "video call" option in my app.

I have found that it is not possible to open the location of the executable in a Universal app...

I have also found that I cannot open an application when it is not associated with any URI schemes...

Is there any way I can do this?


Solution

  • Thanks to Microsoft MVA, some options were presented to us (you just have to fiddle them out):

    Solution 1 (recommended by this Microsoft MVA tutorial):
    If you want to start a specific application, you have to create a URI scheme registration, that only the specific application you want to start can handle. Using the Launcher, you can call a specified URI that will only be handled by one application (e.g. my-cool-uri-scheme://start?param1=123&param2=ABC).

    Note: The user will always have the final choice which app to start with a specified URI (that's why this solution is recommended by Microsoft).

    The following solutions will most likely only work in enterprise environments!

    Solution 2 (clean workaround):
    You have to write a proxy Windows application.
    This proxy application (almost as in solution #1) registers itself with a specific file extension.
    From your UWP app, you then call an imaginary file path containing your parameters (e.g. C:/Users/CURRENTUSER/AppData/Roaming/YOURAPP/PARAM1/PARAM2/PARAM3/open.my-cool-extension) - or event the file itself containing the parameters (e.g. XML or RESTful).
    The handling application will then use those information to start a specific application (using Process.Start) with your given parameters.

    Solution 3 (dirty workaround):
    You have to write an observing Windows application. This application creates a FileSystemWatcher listening to a specific folder. So why is this the dirty workaround? Because you...

    1. Have to create a FileSystemWatcher permanently watching a specific drop directory for you UWP app.
    2. The user has no control about what will happen (no possibility to override the application to start)