Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
ClickOnce puede proporcionar actualizaciones automáticas de aplicaciones. Una aplicación ClickOnce lee periódicamente su archivo de manifiesto de implementación para ver si las actualizaciones de la aplicación están disponibles. Si está disponible, se descarga y ejecuta la nueva versión de la aplicación. Por eficiencia, solo se descargan los archivos que han cambiado.
Al diseñar una aplicación ClickOnce, debe determinar qué estrategia usará la aplicación para comprobar si hay actualizaciones disponibles. Hay tres estrategias básicas que puede usar: comprobar las actualizaciones en el inicio de la aplicación, comprobar si hay actualizaciones después del inicio de la aplicación (que se ejecuta en un subproceso en segundo plano) o proporcionar una interfaz de usuario para las actualizaciones.
Además, puede determinar con qué frecuencia la aplicación comprobará si hay actualizaciones y puede realizar las actualizaciones necesarias.
Nota:
Las actualizaciones de aplicaciones requieren conectividad de red. Si una conexión de red no está presente, la aplicación se ejecutará sin comprobar si hay actualizaciones, independientemente de la estrategia de actualización que elija.
Nota:
En .NET Framework 2.0 y .NET Framework 3.0, cada vez que la aplicación compruebe si hay actualizaciones, antes o después del inicio, o mediante las <API xref:System.Deployment.Application> , debe establecer deploymentProvider en el manifiesto de implementación. El deploymentProvider elemento corresponde en Visual Studio al campo Ubicación de actualización del cuadro de diálogo Actualizaciones de la pestaña Publicar . Esta regla se relaja en .NET Framework 3.5. Para obtener más información, consulte Implementación de aplicaciones ClickOnce para pruebas y servidores de producción sin renunciar.
Buscar actualizaciones después del inicio de la aplicación
Con esta estrategia, la aplicación intentará localizar y leer el archivo de manifiesto de implementación en segundo plano mientras se ejecuta la aplicación. Si hay disponible una actualización, la próxima vez que el usuario ejecute la aplicación, se le pedirá que descargue e instale la actualización.
Esta estrategia funciona mejor para las conexiones de red de ancho de banda bajo o para aplicaciones más grandes que pueden requerir descargas largas.
Para habilitar esta estrategia de actualización, haga clic en Después de que la aplicación se inicie en la sección Elegir cuándo debe buscar actualizaciones del cuadro de diálogo Actualizaciones de aplicaciones. A continuación, especifique un intervalo de actualización en la sección Especifique la frecuencia con la que la aplicación debe comprobar si hay actualizaciones.
Esto es lo mismo que cambiar el elemento Update en el manifiesto de implementación de la siguiente manera:
<!-- When to check for updates -->
<subscription>
<update>
<expiration maximumAge="6" unit="hours" />
</update>
</subscription>
Buscar actualizaciones antes del inicio de la aplicación
La estrategia predeterminada consiste en intentar localizar y leer el archivo de manifiesto de implementación antes de que se inicie la aplicación. Con esta estrategia, la aplicación intentará localizar y leer el archivo de manifiesto de implementación cada vez que el usuario inicie la aplicación. Si una actualización no está disponible, se iniciará la versión existente de la aplicación. Si hay disponible una actualización necesaria, se descargará e iniciará. Si hay una actualización disponible, pero no necesaria, al usuario se le da la opción de actualizar o iniciar la versión existente.
Esta estrategia funciona mejor para las conexiones de red de ancho de banda alto; El retraso en el inicio de la aplicación puede ser inaceptablemente largo a través de conexiones de ancho de banda bajo.
Para habilitar esta estrategia de actualización, haga clic en Antes de que la aplicación comience en la sección Elija cuándo la aplicación debe buscar actualizaciones del cuadro de diálogo Actualizaciones de la aplicación.
Esto es lo mismo que cambiar el elemento Update en el manifiesto de implementación de la siguiente manera:
<!-- When to check for updates -->
<subscription>
<update>
<beforeApplicationStartup />
</update>
</subscription>
Nota:
En el caso de las aplicaciones .NET Core 3.1 y .NET 5 y versiones más recientes, comprobar las actualizaciones antes de que se inicie la aplicación es la única opción de actualización admitida.
Realización de actualizaciones necesarias
Puede haber ocasiones en las que quiera requerir que los usuarios ejecuten una versión actualizada de la aplicación. Por ejemplo, podría realizar un cambio en un recurso externo, como un servicio web que impediría que la versión anterior de la aplicación funcione correctamente. En este caso, querrá marcar la actualización según sea necesario e impedir que los usuarios ejecuten la versión anterior.
Nota:
Aunque puede requerir actualizaciones mediante las otras estrategias de actualización, comprobar Antes de que se inicie la aplicación es la única manera de garantizar que no se pueda ejecutar una versión anterior. Cuando se detecta la actualización obligatoria al iniciarse, el usuario debe aceptar la actualización o cerrar la aplicación.
Para marcar una actualización según sea necesario, haga clic en Especificar una versión mínima necesaria para esta aplicación en el cuadro de diálogo Actualizaciones de aplicaciones y, a continuación, especifique la versión de publicación (principal, secundaria, compilación, revisión), que especifica el número de versión más bajo de la aplicación que se puede instalar.
Esto es lo mismo que establecer el atributo minimumRequiredVersion del elemento Deployment en el manifiesto de implementación; por ejemplo:
<deployment install="true" minimumRequiredVersion="1.0.0.0">
Especificar intervalos de actualización
También puede especificar la frecuencia con la que la aplicación comprueba si hay actualizaciones. Para ello, especifique que la aplicación busque actualizaciones después del inicio, tal y como se describe en "Comprobación de actualizaciones después del inicio de la aplicación" anteriormente en este tema.
Para especificar el intervalo de actualización, establezca las propiedades de la frecuencia con la que la aplicación debe buscar actualizaciones en el cuadro de diálogo Actualizaciones de Aplicaciones.
Esto es lo mismo que establecer los atributos maximumAge y unit del elemento Update en el manifiesto de implementación.
Por ejemplo, puede que quiera comprobar cada vez que se ejecute la aplicación, o una vez por semana, o una vez al mes. Si una conexión de red no está presente en el momento especificado, la comprobación de actualización se realiza la próxima vez que se ejecute la aplicación.
Nota:
En ClickOnce para .NET Core y .NET 5 o posterior, esta característica no es compatible. Para obtener más información, vea ClickOnce para .NET.
Proporcionar una interfaz de usuario para actualizaciones
Al usar esta estrategia, el desarrollador de aplicaciones proporciona una interfaz de usuario que permite al usuario elegir cuándo o con qué frecuencia la aplicación buscará actualizaciones. Por ejemplo, puede proporcionar un comando "Buscar actualizaciones ahora" o un cuadro de diálogo "Configuración de actualización" que tenga opciones para diferentes intervalos de actualización. Las API de implementación de ClickOnce proporcionan un marco para programar su propia interfaz de usuario de actualización. Para obtener más información, consulte el espacio de nombres System.Deployment.Application.
Nota:
La ApplicationDeployment clase y las API del System.Deployment.Application espacio de nombres no se admiten en .NET Core y .NET 5 ni en versiones posteriores. En .NET 7, se admite un nuevo método de acceso a las propiedades de implementación de aplicaciones. Para obtener más información, consulte Access ClickOnce deployment properties in .NET (Acceso a las propiedades de implementación de ClickOnce en .NET). .NET 7 no admite el equivalente de los métodos ApplicationDeployment.
Si la aplicación usa las API de implementación para controlar su propia lógica de actualización, debe bloquear la comprobación de actualizaciones, tal como se describe en "Bloqueo de la comprobación de actualizaciones" en la sección siguiente.
Esta estrategia funciona mejor cuando necesita diferentes estrategias de actualización para distintos usuarios.
Bloqueo de la comprobación de actualizaciones
También es posible evitar que la aplicación compruebe las actualizaciones. Por ejemplo, puede tener una aplicación sencilla que nunca se actualizará, pero quiere aprovechar la facilidad de instalación que proporciona la implementación de ClickOnce.
También debe bloquear la comprobación de actualizaciones si la aplicación usa las API de implementación para realizar sus propias actualizaciones; vea "Proporcionar una interfaz de usuario para actualizaciones" anteriormente en este tema.
Para bloquear la comprobación de actualizaciones, desactive la casilla La aplicación debe comprobar si hay actualizaciones en el cuadro de diálogo Actualizaciones de aplicaciones.
También puede bloquear la comprobación de actualizaciones quitando la <Subscription> etiqueta del manifiesto de implementación.
Elevación y actualizaciones de permisos
Si una nueva versión de una aplicación ClickOnce requiere un mayor nivel de confianza para ejecutarse que la versión anterior, ClickOnce le pedirá al usuario que le pregunte si desea que la aplicación se conceda este nivel de confianza superior. Si el usuario rechaza conceder el nivel de confianza superior, la actualización no se instalará. ClickOnce pedirá al usuario que vuelva a instalar la aplicación cuando se reinicie a continuación. Si el usuario rechaza conceder el nivel de confianza superior en este momento y la actualización no está marcada como necesaria, se ejecutará la versión anterior de la aplicación. Sin embargo, si se requiere la actualización, la aplicación no se ejecutará de nuevo hasta que el usuario acepte el nivel de confianza superior.
No se producirá ninguna solicitud de niveles de confianza al usar la implementación de aplicaciones de confianza. Para más información, consulte Introducción a la implementación de aplicaciones de confianza.