2012-06-12 16 views
11

Tengo una aplicación ClickOnce, y necesito la capacidad de pasarle parámetros de URL. Por ejemplo, un usuario podría hacer clic en una URL del formulario "http://foo.bar/MyApp.application?flavor=grape", y esto iniciará mi aplicación, pasando la consulta "? Flavor = grape".Pasar parámetros de URL a una aplicación ClickOnce en cualquier navegador

Desafortunadamente, parece que esto solo funciona en IE recién sacado de la caja. En Firefox y Chrome, el usuario debe instalar complementos para que la implementación de ClickOnce funcione. Mis usuarios trabajan en un ambiente corporativo restrictivo, y no tienen permitido instalar complementos, ni nada por el estilo (ClickOnce sí funciona para ellos). Entonces qué hago ?

Un truco que podría pensar es registrar mi aplicación como manejador de archivos para una extensión de archivo suficientemente única, como ".bugmaster". Entonces, o así fue mi teoría, podría hacer que mi servidor web genere un archivo llamado "flavor_grape.bugmaster"; el usuario hará clic en una URL que apunta a ese archivo, luego elija "Ejecutar" en lugar de "Guardar", y esto iniciará mi aplicación, que luego analizará el nombre del archivo para los parámetros de la URL. Desafortunadamente, este enfoque tampoco funciona. Funciona perfectamente bien cuando el archivo "flavor_grape.bugmaster" se abre desde el sistema de archivos local, pero, por alguna razón, esto no funciona cuando el usuario intenta abrir el archivo desde un navegador.

¿Alguien tiene alguna otra idea?

Respuesta

11

Hay un pequeño truco ingenioso para ClickOnce en el que puedes codificar parámetros directamente en la URL que usa setup.exe. Así, por ejemplo, para crear un setup.exe que contiene el parámetro '= sabor de uva', podría ejecutar lo siguiente desde la línea de comandos:

copy setup.exe setup-for-grape.exe 
setup.exe -url="http://foo.bar/MyApp.application?flavor=grape" /dest=setup-for-grape.exe 

Este utiliza la bandera/dest indocumentado a la salida de los resultados a la setup-for-grape.exe, en lugar de modificar el setup.exe original. Después de hacer esto, setup-for-grape.exe apuntará a su URL y contendrá su parámetro flavor = grape. Tenga en cuenta que si usa la firma, deberá hacer esto en una copia no firmada de de su setup.exe, y luego firmarlo luego, ya que rompe la firma.

Si la cantidad de posibles opciones de parámetros es bastante limitada, puede generar setup.exe para todas ellas y vincularlas desde su sitio web.

Por otro lado, si hay un número ilimitado de opciones, puede configurar un servicio web que adopte algunos parámetros, genere un archivo setup.exe con los parámetros deseados codificados en él, y lo escuche nuevamente al cliente. He usado este método para generar setup.exe para clientes conectados a servidores específicos: las URL de instalación del cliente tienen codificada la información de conexión del servidor, de modo que cuando se instala un cliente, éste sabe automáticamente a qué servidor conectarse.

Por supuesto, si no desea usar setup.exe, o si su entorno corporativo restrictivo no lo permite, todo esto sale directamente de la ventana. Pero con suerte lo encontrará útil, o al menos informativo.

+0

¡Guau! Aprendes cosas nuevas todos los días. He estado trabajando con ClickOnce por un tiempo, y de alguna manera he perdido esta opción. @Marty Dill: ¿Has usado esta técnica en el pasado? – RLH

+0

¡Sip! Ver mi segundo último párrafo. Lo usé para generar setup.exe que contiene información sobre a qué servidor conectarse. Una vez que el sistema estaba en funcionamiento, funcionó bastante bien. –

+0

Este es un buen truco, pero desafortunadamente necesito un número ilimitado de opciones (bueno, supongo que técnicamente es limitado, pero hay más de 1e10), y mi aplicación no necesita ser firmada. Aunque probablemente podría configurar el servicio web para que firme la aplicación también. Sin embargo, es una idea interesante, ¡gracias! – Bugmaster

Cuestiones relacionadas