Это был рекомендуемый подход для IE при поддержке Microsoft
http://msdn.microsoft.com/en-us/library/ms537503%28VS.85%29.aspx#related_topics
"Если у вас есть некоторый контроль над двоичными файлами, устанавливаемыми на компьютере пользователя, проверка UA в сценарии кажется подходящим подходом:
HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ 5.0 \ User Agent \ Post Platform
"- M $ support
Каждая веб-страница имеет доступ к строке userAgent, и если вы отбрасываете пользовательское значение пост-платформы, обнаружить его в javascript с помощью navigator.userAgent довольно просто.
К счастью, другие крупные браузеры, такие как Firefox и Chrome (за исключением Safari :(), не выдают ошибки «страница не найдена», когда нажата ссылка с пользовательским протоколом и протокол не установлен на компьютере пользователя. очень неумолимо, любой трюк, чтобы кликнуть в невидимом фрейме или перехватить ошибки javascript, не работает и заканчивается уродливой ошибкой «веб-страница не может быть отображена». Уловка, которую мы используем в нашем случае, состоит в том, чтобы информировать пользователей с изображениями, специфичными для браузера, которые нажимают на ссылка на специальный протокол откроет приложение. И если они не обнаружат, что приложение открывается, они могут щелкнуть «страницу установки». С точки зрения XD это wprks намного лучше, чем подход ActiveX для IE.
Для FF и Chrome просто запустите пользовательский протокол без какого-либо обнаружения. Позвольте пользователю рассказать вам, что он видит.
Для Safari :( пока нет ответов