Elegir una estrategia de actualización de ClickOnceChoosing a ClickOnce Update Strategy

ClickOnceClickOnce puede proporcionar actualizaciones automáticas de aplicaciones. can provide automatic application updates. Un ClickOnceClickOnce aplicación lee periódicamente su archivo de manifiesto de implementación para ver si hay disponibles actualizaciones a la aplicación.A ClickOnceClickOnce application periodically reads its deployment manifest file to see whether updates to the application are available. En caso afirmativo, la nueva versión de la aplicación se descarga y se ejecuta.If available, the new version of the application is downloaded and run. Para una mayor eficiencia, se descargan sólo los archivos que han cambiado.For efficiency, only those files that have changed are downloaded.

A la hora de diseñar una aplicación ClickOnceClickOnce, es necesario determinar qué estrategia utilizará la aplicación para comprobar si hay actualizaciones disponibles.When designing a ClickOnceClickOnce application, you have to determine which strategy the application will use to check for available updates. Se pueden utilizar tres estrategias básicas: comprobar si hay actualizaciones al inicio de la aplicación, comprobar si hay actualizaciones después del inicio de la aplicación (ejecutándose en un subproceso de segundo plano) o proporcionando una interfaz de usuario para las actualizaciones.There are three basic strategies that you can use: checking for updates on application startup, checking for updates after application startup (running in a background thread), or providing a user interface for updates.

Además, puede determinar con qué frecuencia debe comprobar la aplicación si hay actualizaciones y puede hacer que las actualizaciones sean obligatorias.In addition, you can determine how often the application will check for updates, and you can make updates required.

Nota

Las actualizaciones de aplicaciones requieren conectividad de red.Application updates require network connectivity. Si no hay conexión de red, la aplicación se ejecutará sin comprobar si hay actualizaciones, independientemente de la estrategia de actualización elegida.If a network connection is not present, the application will run without checking for updates, regardless of the update strategy that you choose.

Nota

En .NET Framework 2.0 y .NET Framework 3.0, cada vez que la aplicación comprueba si hay actualizaciones, antes o después del inicio, o mediante las API de System.Deployment.Application, debe establecer deploymentProvider en el manifiesto de implementación.In .NET Framework 2.0 and .NET Framework 3.0, any time your application checks for updates, before or after startup, or by using the System.Deployment.Application APIs, you must set deploymentProvider in the deployment manifest. El deploymentProvider elemento corresponde en Visual Studio para la Actualizar ubicación campo el actualizaciones cuadro de diálogo de la publicar ficha. Esta regla es más flexible en .NET Framework 3.5.The deploymentProvider element corresponds in Visual Studio to the Update location field on the Updates dialog box of the Publish tab. This rule is relaxed in .NET Framework 3.5. Para obtener más información, consulte implementación ClickOnce aplicaciones para las pruebas y los servidores de producción sin Resigning.For more information, see Deploying ClickOnce Applications For Testing and Production Servers without Resigning.

Comprobar si hay actualizaciones después del inicio de la aplicaciónChecking for Updates After Application Startup

Con esta estrategia, la aplicación intentará buscar y leer en segundo plano el archivo de manifiesto de implementación mientras la aplicación se está ejecutando.By using this strategy, the application will attempt to locate and read the deployment manifest file in the background while the application is running. Si hay una actualización disponible, la próxima vez que el usuario ejecute la aplicación, se le pedirá que descargue e instale la actualización.If an update is available, the next time that the user runs the application, he will be prompted to download and install the update.

Esta estrategia funciona mejor para las conexiones de red con un bajo ancho de banda o para las aplicaciones de gran tamaño que podrían requerir mucho tiempo de descarga.This strategy works best for low-bandwidth network connections or for larger applications that might require lengthy downloads.

Para habilitar esta estrategia de actualización, haga clic en tras iniciar la aplicación en el Elija cuándo debe buscar actualizaciones la aplicación sección de la actualizaciones de la aplicación cuadro de diálogo.To enable this update strategy, click After the application starts in the Choose when the application should check for updates section of the Application Updates dialog box. A continuación, especifique un intervalo de actualización en la sección especificar la frecuencia con la que la aplicación buscará actualizaciones.Then specify an update interval in the section Specify how frequently the application should check for updates.

Esto es lo mismo que cambiar la actualización elemento de la implementación del manifiesto como sigue:This is the same as changing the Update element in the deployment manifest as follows:

<!-- When to check for updates -->  
<subscription>  
   <update>  
      <expiration maximumAge="6" unit="hours" />  
   </update>  
</subscription>  

Comprobar si hay actualizaciones antes del inicio de la aplicaciónChecking for Updates Before Application Startup

La estrategia predeterminada consiste en intentar buscar y leer el archivo de manifiesto de implementación antes de que se inicie la aplicación.The default strategy is to try to locate and read the deployment manifest file before the application starts. Con esta estrategia, la aplicación intentará buscar y leer el archivo de manifiesto de implementación cada vez que el usuario inicie la aplicación.By using this strategy, the application will attempt to locate and read the deployment manifest file every time that the user starts the application. Si hay disponible alguna actualización, se descargará y se iniciará; de lo contrario, se iniciará la versión existente de la aplicación.If an update is available, it will be downloaded and started; otherwise, the existing version of the application will be started.

Esta estrategia funciona mejor para las conexiones de red de un ancho de banda elevado; el retraso en el inicio de la aplicación puede ser inaceptablemente largo en conexiones de ancho de banda reducido.This strategy works best for high-bandwidth network connections; the delay in starting the application may be unacceptably long over low-bandwidth connections.

Para habilitar esta estrategia de actualización, haga clic en antes de iniciar la aplicación en el Elija cuándo debe buscar actualizaciones la aplicación sección de la actualizaciones de la aplicación cuadro de diálogo.To enable this update strategy, click Before the application starts in the Choose when the application should check for updates section of the Application Updates dialog box.

Esto es lo mismo que cambiar la actualización elemento de la implementación del manifiesto como sigue:This is the same as changing the Update element in the deployment manifest as follows:

<!-- When to check for updates -->  
<subscription>  
   <update>  
      <beforeApplicationStartup />  
   </update>  
</subscription>  

Hacer que las actualizaciones sean obligatoriasMaking Updates Required

Puede haber ocasiones en las que desea obligar a los usuarios a ejecutar una versión actualizada de su aplicación.There may be occasions when you want to require users to run an updated version of your application. Por ejemplo, podría realizar un cambio en un recurso externo como un servicio Web que impediría que funcionara correctamente la versión anterior de su aplicación.For example, you might make a change to an external resource such as a Web service that would prevent the earlier version of your application from working correctly. En este caso, debería marcar su actualización como obligatoria e impedir que los usuarios ejecuten la versión anterior.In this case, you would want to mark your update as required and prevent users from running the earlier version.

Nota

Aunque puede requerir actualizaciones utilizando las otras estrategias de actualización, comprobar su existencia antes de iniciar la aplicación es la única manera de garantizar que no se puede ejecutar una versión anterior.Although you can require updates by using the other update strategies, checking Before the application starts is the only way to guarantee that an older version cannot be run. Si la actualización obligatoria se detecta al inicio, el usuario deberá aceptarla o cerrar la aplicación.When the mandatory update is detected on startup, the user must either accept the update or close the application.

Para marcar una actualización si es necesario, haga clic en especificar la versión mínima requerida para esta aplicación en el aplicación actualiza diálogo cuadro y, a continuación, especifique la versión de publicación (principales, Secundaria, generar, revisión), que especifica el número de versión más bajo de la aplicación que se pueden instalar.To mark an update as required, click Specify a minimum required version for this application in the Application Updates dialog box, and then specify the publish version (Major, Minor, Build, Revision), which specifies the lowest version number of the application that can be installed.

Esto es lo mismo que establecer el minimumRequiredVersion atributo de la implementación elemento en el manifiesto de implementación; por ejemplo:This is the same as setting the minimumRequiredVersion attribute of the Deployment element in the deployment manifest; for example:

<deployment install="true" minimumRequiredVersion="1.0.0.0">  

Especificar intervalos de actualizaciónSpecifying Update Intervals

También puede especificar con qué frecuencia se comprueba si hay actualizaciones.You can also specify how often the application checks for updates. Para ello, especifique que la aplicación debe comprobar si hay actualizaciones tras el inicio, tal y como se ha descrito anteriormente en la sección "Comprobar si hay actualizaciones tras el inicio de la aplicación".To do this, specify that the application check for updates after startup as described in "Checking for Updates After Application Startup" earlier in this topic.

Para especificar el intervalo de actualización, establezca la especificar la frecuencia con la que la aplicación buscará actualizaciones propiedades en el actualizaciones de la aplicación cuadro de diálogo.To specify the update interval, set the Specify how frequently the application should check for updates properties in the Application Updates dialog box.

Esto es lo mismo que establecer el maximumAge y unidad atributos de la actualización elemento en el manifiesto de implementación.This is the same as setting the maximumAge and unit attributes of the Update element in the deployment manifest.

Por ejemplo, puede desear comprobarlo cada vez que se ejecuta la aplicación, o una vez por semana o una vez al mes.For example, you may want to check each time the application runs, or one time a week, or one time a month. Si no hay ninguna conexión de red en el momento especificado, la comprobación de actualización se realizará la próxima vez que se ejecute la aplicación.If a network connection is not present at the specified time, the update check is performed the next time that the application runs.

Proporcionar una interfaz de usuario para las actualizacionesProviding a User Interface for Updates

Con esta estrategia, el desarrollador de la aplicación proporciona una interfaz que permite al usuario elegir cuándo y con qué frecuencia comprobará la aplicación si hay actualizaciones.When using this strategy, the application developer provides a user interface that enables the user to choose when or how often the application will check for updates. Por ejemplo, podría proporcionar un elemento de menú "Comprobar ahora si hay actualizaciones" o un cuadro de diálogo "Configuración de actualizaciones" que ofrezca opciones para distintos intervalos de actualización.For example, you might provide a "Check for Updates Now" command, or an "Update Settings" dialog box that has choices for different update intervals. El ClickOnceClickOnce las API de implementación proporcionan un marco de trabajo para la programación de su propia interfaz de usuario de actualización.The ClickOnceClickOnce deployment APIs provide a framework for programming your own update user interface. Para obtener más información, vea el espacio de nombres System.Deployment.Application.For more information, see the System.Deployment.Application namespace.

Si la aplicación utiliza las API de implementación para controlar su propia lógica de actualización, debería bloquear la comprobación de actualizaciones del modo en que se describe en la sección "Bloquear la comprobación de actualizaciones" que se muestra más adelante.If your application uses deployment APIs to control its own update logic, you should block update checking as described in "Blocking Update Checking" in the following section.

Esta estrategia es más adecuada cuando es necesario disponer de diferentes estrategias de actualización para los distintos usuarios.This strategy works best when you need different update strategies for different users.

Bloquear la comprobación de actualizacionesBlocking Update Checking

También es posible impedir que su aplicación compruebe si hay actualizaciones disponibles.It is also possible to prevent your application from ever checking for updates. Por ejemplo, podría tener una aplicación sencilla que no se vaya a actualizar nunca, pero desea aprovechar la facilidad de instalación que ofrece la implementación de ClickOnceClickOnce.For example, you might have a simple application that will never be updated, but you want to take advantage of the ease of installation provide by ClickOnceClickOnce deployment.

Deberá bloquear también la comprobación de actualizaciones si la aplicación utiliza las API de implementación para realizar sus propias actualizaciones; vea la sección "Proporcionar una interfaz de usuario para las actualizaciones" anterior.You should also block update checking if your application uses deployment APIs to perform its own updates; see "Providing a User Interface for Updates" earlier in this topic.

Para bloquear la comprobación de actualizaciones, desactive la la aplicación buscará actualizaciones casilla de verificación en el cuadro de diálogo de las actualizaciones de aplicación.To block update checking, clear the The application should check for updates check box in the Application Updates Dialog Box.

También puede bloquear la comprobación de actualizaciones quitando la etiqueta <Subscription> del manifiesto de implementación.You can also block update checking by removing the <Subscription> tag from the deployment manifest.

Elevación de permisos y actualizacionesPermission Elevation and Updates

Si una nueva versión de una aplicación ClickOnceClickOnce exige un mayor nivel de confianza para ejecutarse que en la versión anterior, ClickOnceClickOnce preguntará al usuario si desea que se conceda a la aplicación este nivel de confianza superior.If a new version of a ClickOnceClickOnce application requires a higher level of trust to run than the previous version, ClickOnceClickOnce will prompt the user, asking him if he wants the application to be granted this higher level of trust. Si el usuario lo declina, la actualización no se instalará.If the user declines to grant the higher trust level, the update will not install. ClickOnceClickOnce preguntará al usuario si desea volver a instalar la aplicación la próxima vez que se reinicie. will prompt the user to install the application again when it is next restarted. Si, en esta ocasión, el usuario vuelve a declinar que se conceda un mayor nivel de confianza y la actualización no está marcada como obligatoria, se ejecutará la versión anterior de la aplicación.If the user declines to grant the higher level of trust at this point, and the update is not marked as required, the old version of the application will run. Sin embargo, si la actualización es obligatoria, la aplicación no se ejecutará de nuevo hasta que el usuario acepte el nivel de confianza superior.However, if the update is required, the application will not run again until the user accepts the higher trust level.

Si utiliza la implementación de aplicaciones de confianza, no se realizará ninguna pregunta sobre los niveles de confianza.No prompting for trust levels will occur if you use Trusted Application Deployment. Para obtener más información, consulta Trusted Application Deployment Overview.For more information, see Trusted Application Deployment Overview.

Vea tambiénSee Also

System.Deployment.Application
Seguridad e implementación ClickOnce ClickOnce Security and Deployment
Elegir una estrategia de implementación de ClickOnce Choosing a ClickOnce Deployment Strategy
Proteger las aplicaciones ClickOnce Securing ClickOnce Applications
Cómo realiza ClickOnce actualizaciones de aplicaciones How ClickOnce Performs Application Updates
Cómo: Administrar actualizaciones de aplicaciones ClickOnceHow to: Manage Updates for a ClickOnce Application