<p>We have an advanced webpage (ASP.NET, C#), and a application which needs to be installed on the client computer in order to utilize the webpage to its fullest. The application is a tray app, and has primarily two tasks. Detect when certain events happen on the webserver (for instance invited to a meeting, or notify of an upcoming meeting). The other task the trayapp has is to use a custom protocol (trayapp://) to perform some ajax calls back to the server.</p>

<p>One problem we have is how to determine if the application is installed on the local machine or not. Now the user has to tick a checkbox to inform the website that the application is installed, and that it's safe to call the trayapp:// url calls.</p>

<p>Is there any way, for instance through a JavaScript or similar to detect if our application is installed on the local machine?</p>

<p>The check needs to work for IE, FF and Opera browsers.</p>

When installing your client-side app you could modify the browser configuration to include another request header in HTTP requests and then have the server code look for that header, for example as a supported mime type using the following registry key (for Internet explorer)
```
```
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
                                                      Internet Settings\Accepted Documents
```
```
I am not sure if Opera and FF use this same key, but they likely have similar configuration options, but this should at least get you on the right track.