Estoy trabajando en un proyecto implementado con ClickOnce, y estoy atravesando varios problemas.Problemas de implementación de ClickOnce
Hay dos componentes en mi solución de software: un cliente de escritorio que necesita .NET Framework 3.5 para funcionar, y un servidor (ASP.NET aplicación) que enumera los documentos disponibles y proporciona una manera de instalar el cliente de escritorio con ClickOnce.
Mi primer problema es el requisito previo: necesito una forma de instalar el marco 3.5 antes de la instalación del cliente. Visual Studio crea un setup.exe
que se ocupa de eso, pero para que funcione, debe ejecutarse directamente (en lugar de vincularse al archivo .application
), y se debe conocer la implementación URL al crear el manifiesto ClickOnce.
Tengo dos problemas más: aparentemente no hay forma de ejecutar la aplicación cliente con argumentos de cadena de consulta después de instalarlo con setup.exe
, así que en lugar de tener un servidor que muestre la lista de documentos vincule a una URL como "... /client.application?document=doc1 "Solo puedo tener un enlace al setup.exe
.
El otro problema es el peor: el servidor está destinado a ser utilizado en redes privadas relativamente pequeñas, y no en un solo servidor web. El problema es que no conozco la URL de despliegue del cliente ClickOnce en tiempo de compilación, por lo que el setup.exe
no se puede ejecutar correctamente cuando la opción "instalar desde un sitio web" está marcada. Por ahora, la solución consiste en tener un instalador sin conexión que contenga el setup.exe
, los requisitos previos y los archivos de implementación ClickOnce en un gran archivo ZIP.
Un usuario con la versión de marco adecuada todavía puede usar el enlace .application
con querystring en el documento para instalar/actualizar el cliente y abrir el documento. Un usuario sin el marco recibe un mensaje de error ("Actualización del sistema requerida blablabla 3.5.0.0 blabla GAC"), y tiene que descargar el archivo ZIP, lo extrae en su máquina local y ejecuta el archivo setup.exe
para instalar el marco, y luego el cliente. Y después de eso, tiene que regresar a la lista de documentos y usar el enlace para iniciar al cliente con los argumentos adecuados.
No hace falta decir que no estoy muy orgulloso de esta estrategia, que arruina todas las ventajas de implementación de ClickOnce.
¿Es posible deshacerse de los problemas de requisitos previos de una manera más elegante? ¿Existe una manera simple de modificar la URL de instalación de la aplicación ClickOnce al implementar el servidor en una red (como escribir la URL en un archivo de configuración o algo así)?
sobre los requisitos previos, tuve que cambiar la URL utilizada para buscar los archivos descargados ("setup.exe -url = http: //my.application.com") no funcionó en el primer intento con los requisitos previos descargado desde la misma ubicación que mi aplicación debido a la configuración del servidor web: los tipos mime no se registraron para msp y msu, por lo que setup.exe no pudo obtener los archivos de requisitos previos –
Una pequeña sugerencia es intentar hacer preguntas únicas en StackOverflow como es más fácil para las personas leer y dirigir. También es difícil aceptar respuestas parciales que lo hacen injusto para aquellos que quieran ayudarlo. Si necesita proporcionar más contexto, puede vincularlo con sus otras preguntas para ayudarlo a proporcionar información sobre el conjunto de problemas que enfrenta. – jpierson