0

We're trying to work out how to create a system to deep-link to our software from a web page. We've got most of the way there, the links themselves are working, but we're stuck on whether there's any way for the browser to know in advance whether the software is installed. I know there are solutions to this on Android and iOS, but I'd like to find a method that works for Windows and MacOS as well.

I've seen a few other people try to solve this (eg How to check whether specific software is installed or not using javascript in client system?) and the consensus seems to be that it's impossible, but I've seen at least one example of a website that makes it work (https://screencast-o-matic.com/screen-recorder).

Screencast-o-matic's solution seems (as far as I can tell) to rely on their software running a service in the background, so that the browser can make a call to it via 127.0.0.1. If it gets a response, it runs the software, otherwise it links to the downloader.

This solution seems very promising, but we'd like to avoid having a service run on the users' computers (this is educational software, so we have to keep the users' machines as clean as possible). But I wondered if there was a similar option which simply involves writing a file somewhere on the machine that the browser has access to.

I realise this is perhaps a little vague, but I'd appreciate any thoughts on it, or pushes in useful directions.

  • 1
    No, don't think it's possible still. The service running in a background solution is...bold, I suppose. It relies on the user being allowed to start services (maybe they've restrictions) and that the service hasn't been stopped (user, or machine policy, etc). Most things I've seen that try to leverage the browser to start a local application use a custom protocol, like `steam://` for example which is then handled by Steam. The browser knows to forward those to the OS and the OS then forwards this to the software. Software has to register this protocol. You can't know if it's installed, though. – VLAZ Mar 31 '20 at 12:49
  • Yes, the custom protocol approach is the way we've gone with the link itself, which is working very nicely and was surprisingly easy to set up. But it was the 'is it installed?' part we were wondering about. Annoyingly, if they don't have the software (or if they reject the 'run this software?' message when they click it) the link fails completely silently, without any kind of error response. – Danny Kodicek Mar 31 '20 at 13:31
  • OK, I've never looked into how they do it, but some things redirect you to a website. For example, Microsoft Teams - when you get a reminder (from Outlook) for a meeting that's set up in teams, you click "join" and you go to the Teams website which offers you to download Teams and has a button that says (paraphrased) "Already installed? Launch from here". At the same time you *also* get a custom protocol thing firing and opening teams with the meeting. I suspect the page, when opened, will also issue a `teams://` or whatever but also serves as a fallback if Teams isn't installed. – VLAZ Apr 01 '20 at 05:59

0 Answers0