visual usar studio sitio publicar proyecto para net instalar está crear configurar configurado configuracion asp aplicación aplicacion asp.net javascript ajax web-applications

usar - publicar aplicacion asp.net en iis



Detectar desde el navegador si se instala una aplicación específica (5)

Tenemos una página web avanzada (ASP.NET, C #) y una aplicación que debe instalarse en la computadora del cliente para poder utilizar la página web al máximo. La aplicación es una aplicación de bandeja y tiene principalmente dos tareas. Detectar cuándo ocurren ciertos eventos en el servidor web (por ejemplo, invitarlos a una reunión o notificar acerca de una próxima reunión). La otra tarea que tiene la aplicación trayapp es usar un protocolo personalizado (trayapp: //) para realizar algunas llamadas ajax al servidor.

Un problema que tenemos es cómo determinar si la aplicación está instalada en la máquina local o no. Ahora el usuario tiene que marcar una casilla de verificación para informar al sitio web que la aplicación está instalada y que es seguro llamar a trayapp: // url calls.

¿Hay alguna forma, por ejemplo a través de JavaScript o similar para detectar si nuestra aplicación está instalada en la máquina local?

El cheque debe funcionar para los navegadores IE, FF y Opera.


Al instalar su aplicación del lado del cliente puede modificar la configuración del navegador para incluir otro encabezado de solicitud en las solicitudes HTTP y luego hacer que el código del servidor busque ese encabezado, por ejemplo como un tipo de mime admitido utilizando la siguiente clave de registro (para Internet Explorer)

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/ Internet Settings/Accepted Documents

No estoy seguro de si Opera y FF usan esta misma clave, pero es probable que tengan opciones de configuración similares, pero al menos esto debería llevarlo por el buen camino.


Bueno, el método que fue mencionado por "algunos" es muy común pero también hay otros métodos, por ejemplo, si la aplicación está escuchando localmente en un puerto, puede detectarse desde el navegador, que es muy común para las soluciones de seguridad porque tienen algún tipo de proxy local para filtrar el tráfico De hecho, hace un tiempo hice un video sobre el uso de esta técnica para detectar el antivirus avast, puedes verlo aquí:

https://www.youtube.com/watch?v=39_Nd8oiEAk


Buena idea de @JohnFx.

Otra forma de abordar esto sería instalar un control ActiveX o un complemento de navegador con la instalación de trayapp. A continuación, puede acceder a esto de forma similar a la que se hace cuando se comprueba la versión de Flash disponible.


Exponga la aplicación trayapp (asumiendo esto como una aplicación administrada) como objeto COM. A continuación, podría usar la etiqueta con el GUID y atrapar errores cuando no se encuentre o utilizar ActiveXobject con el programa para detectar si está instalado.


Si desea detectar con javascript dentro del navegador, probablemente pueda usar la colección "navigator.plugins". Funciona con Firefox, Opera y Chrome, pero desafortunadamente no con IE.

Actualización: en FF, Opera y Chrome puedes probarlo fácilmente así:

if (navigator.plugins["Adobe Acrobat"]) { // do some stuff if it is installed } else { // do some other stuff if its not installed }

Actualización n. ° 2: si se trata de un objeto ActiveX en IE, puede probar si existe utilizando algo como esto:

function getActiveXObject(name){ try{ return new ActiveXObject(name); } catch(err){ return undefined; } };

Otro enfoque para IE es algo similar a lo que JohnFx sugirió (lo encontré aquí y no lo he probado):

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/Curr entVersion/Internet Settings/User Agent/Post Platform