Implementación de aplicaciones ClickOnce para los servidores de pruebas y producción sin nueva firma

En este artículo se describe una característica de ClickOnce introducida en la versión 3.5 de .NET Framework que permite la implementación de aplicaciones ClickOnce desde varias ubicaciones de red sin volver a firmar ni cambiar los manifiestos de ClickOnce.

Nota

Volver a firmar sigue siendo el método preferido para implementar nuevas versiones de aplicaciones. Siempre que sea posible, use el método de volver a firmar. Para más información, consulte Mage.exe (Herramienta de generación y edición de manifiestos).

Los desarrolladores e ISV de terceros pueden participar en esta característica, lo que facilita a sus clientes actualizar sus aplicaciones. Esta característica se puede usar en las siguientes situaciones:

  • Al actualizar una aplicación, no para la primera instalación de una aplicación.

  • Cuando solo hay una configuración de la aplicación en un equipo. Por ejemplo, si una aplicación está configurada para que apunte a dos bases de datos diferentes, no puede usar esta característica.

Exclusión de deploymentProvider de los manifiestos de implementación

En .NET Framework 2.0 y .NET Framework 3.0, cualquier aplicación ClickOnce que se instale en el sistema para la disponibilidad sin conexión debe enumerar un elemento deploymentProvider en su manifiesto de implementación. deploymentProvider a menudo se conoce como la ubicación de actualización; es la ubicación donde ClickOnce busca actualizaciones de aplicaciones. Este requisito, junto con la necesidad de que los editores de aplicaciones firmen sus implementaciones, dificultan que una empresa actualice una aplicación ClickOnce de un proveedor u otro tercero. También dificulta la implementación de la misma aplicación desde varias ubicaciones de la misma red.

Con los cambios realizados en ClickOnce en .NET Framework 3.5, es posible que un tercero proporcione una aplicación ClickOnce a otra organización, que luego puede implementar la aplicación en su propia red.

Para aprovechar esta característica, los desarrolladores de aplicaciones ClickOnce deben excluir deploymentProvider de sus manifiestos de implementación. Este requisito significa que debe excluir el argumento -providerUrl al crear manifiestos de implementación con Mage.exe. O bien, si está generando manifiestos de implementación con MageUI.exe, debe asegurarse de que el cuadro de texto Ubicación de inicio de la pestaña Manifiesto de aplicación se deja en blanco.

Nota:

En ClickOnce para .NET Core 3.1 y .NET 5, o posterior, use dotnet-mage.exe en lugar de Mage.exe. Para obtener más información, consulte ClickOnce para .NET.

Actualizaciones de aplicaciones y deploymentProvider

A partir de .NET Framework 3.5, ya no es necesario especificar un elemento deploymentProvider en el manifiesto de implementación para implementar una aplicación ClickOnce para el uso en línea y sin conexión. Este cambio admite el escenario en el que necesita empaquetar y firmar la implementación usted mismo, pero permitir que otras empresas implementen la aplicación a través de sus redes.

Lo importante que hay que recordar es que las aplicaciones que excluyen un deploymentProvider no pueden cambiar su ubicación de instalación durante las actualizaciones, hasta que envían una actualización que incluye la etiqueta deploymentProvider de nuevo.

Aquí hay dos ejemplos para aclarar este punto. En el primer ejemplo, se publica una aplicación ClickOnce que no tiene ninguna etiqueta deploymentProvider y se pide a los usuarios que lo instalen desde http://www.adatum.com/MyApplication/. Si decide que quiere publicar la siguiente actualización de la aplicación desde http://subdomain.adatum.com/MyApplication/, no tiene ninguna manera de indicar esto en el manifiesto de implementación que reside en http://www.adatum.com/MyApplication/. Puede realizar una de estas dos acciones:

  • Indique a los usuarios que desinstalen la versión anterior e instalen la nueva versión desde la nueva ubicación.

  • Incluya una actualización en http://www.adatum.com/MyApplication/ que incluya un deploymentProvider que apunte a http://www.adatum.com/MyApplication/. A continuación, publique otra actualización más adelante con deploymentProvider apuntando a http://subdomain.adatum.com/MyApplication/.

    En el segundo ejemplo, publica una aplicación ClickOnce que especifica deploymentProvider y, a continuación, decide quitarla. Una vez descargada la nueva versión sin deploymentProvider en los clientes, no podrá redirigir la ruta de acceso usada para las actualizaciones hasta que publique una versión de la aplicación en la que deploymentProvider se haya restaurado. Al igual que con el primer ejemplo, deploymentProvider debe apuntar inicialmente a la ubicación de la actualización actual, no a la nueva ubicación. En este caso, si intenta insertar un objeto deploymentProvider que hace referencia a http://subdomain.adatum.com/MyApplication/, se produce un error en la siguiente actualización.

de una implementación

Para obtener instrucciones paso a paso sobre la creación de implementaciones que se pueden implementar desde diferentes ubicaciones de red, consulte Tutorial: Implementación manual de una aplicación ClickOnce que no requiera el proceso de volver a firmar y que conserve la información de personalización de marca.