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?
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¶m2=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...
FileSystemWatcher
permanently watching a specific drop directory for you UWP app.