21

Actualicé mi aplicación ClickOnce y luego, cuando el usuario ejecuta, se le pregunta si desea instalar la nueva versión.La aplicación ClickOnce omite pedir una actualización (o suspender el inicio si se selecciona omisión)

Estoy trabajando en un entorno altamente controlado. Cuando hay una actualización disponible, debe instalarse (la compatibilidad con la base de datos no está garantizada con las versiones anteriores).

Otra opción es suspender la ejecución si se presiona omisión (eso también funciona bien).

Necesito alguna forma de evitar que ejecuten una versión anterior de la aplicación.

Respuesta

39

Este artículo responde a su pregunta. Te indico el artículo en lugar de solo publicar una respuesta porque todo en el artículo vale la pena saberlo.

http://www.sayedhashimi.com/CategoryView,category,ClickOnce.aspx

El siguiente es un extracto relevante del artículo:

Forzar actualizaciones ClickOnce

Uno de los grandes puntos de venta de ClickOnce es actualizaciones automáticas. Una de las preguntas comunes que recibo con respecto a a las actualizaciones es "¿Cómo puedo forzar una actualización en el usuario?"

Hay tres cosas que debe saber con respecto a forzar cambios en usuarios:

1) Si la aplicación es una aplicación en línea , los usuarios siempre ejecutar la última versión; en línea las aplicaciones se descargan cada vez que se accede a la aplicación . Por lo tanto, con aplicaciones en línea, obtiene actualizaciones forzadas por defecto.

2) Si la aplicación es una aplicación instalada , puede forzar actualizaciones de usando el atributo MinimumRequiredVersion . Si publica su aplicación con Visual Studio, puede configurar esta propiedad desde el cuadro de diálogo Actualizaciones .

3) La última cosa a tener en cuenta es que si su aplicación es un aplicación instalada (y no se ha establecido el atributo MinimumRequiredVersion) ClickOnce le solicitará al usuario con un "Actualización disponible" diálogo sólo si el usuario inicia la aplicación desde el atajo del menú de inicio . Es decir, si una aplicación es una aplicación instalada y el usuario inicia la aplicación desde una URL, ClickOnce fuerza la actualización.


También encontré otro buen artículo:

ClickOnce: Bringing Ease and Reliability to Smart Client Deployment

+1

¡Gran respuesta! Muchas gracias. – Vaccano

+0

¡Gracias por las respuestas, muy útiles! :) Solo una nota que el enlace sayedhashimi.com está roto. – deadlydog

+1

He documentado un proceso para actualizar automáticamente el atributo MinimumRequiredVersion cuando uso el método 2 en http://geekswithblogs.net/deadlydog/archive/2012/08/15/force-clickonce-applications-to-automatically-update-without- prompt-user.aspx – deadlydog

2

Me trabajaron desmarcando La aplicación debe comprobar las actualizaciones, y se inició la aplicación actualizar sin preguntar al usuario después de dos versiones.

Enter image description here

+3

Esto solo funcionará si maneja las Actualizaciones en el código usando la API Clickonce: http://msdn.microsoft.com/en-us/library/ms404263.aspx –

+1

sí mi código está manejando las actualizaciones en Program.cs recargo el código si el ensamblaje tiene una versión más nueva – PUG

0

Para forzar una actualización de los clientes debe establecer el campo de versión mínima es igual a la versión actual va a implementar, esto obligará a la actualización whiout "skip" opción.

4

Esto funcionó perfectamente para mí. Añadir lo siguiente al archivo de proyecto:

<UpdateRequired>true</UpdateRequired> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 

Tenga en cuenta que ApplicationVersion no puede tener un valor como 1.0.0.* en el archivo de proyecto y debe ser incrementado en tiempo de compilación para la actualización automática para trabajar.

Si se utiliza TeamCity, para incrementar el número de versión va a configuración de generación página para su proyecto y establezca las siguientes sistema de propiedad:

system.ApplicationVersion = %build.number% 

También puede obtener MSBuild para incrementar versión por tiempo con algo como esto:

<UpdateRequired>true</UpdateRequired> 
<BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</BuildNumber> 
<RevisionNumber>$([System.DateTime]::Now.ToString(mmss))</RevisionNumber> 
<ApplicationVersion>1.0.$(BuildNumber).$(RevisionNumber)</ApplicationVersion> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 
1

Además de David's answer, simplemente instale AutoUpdateProjectsMinimumRequiredClickOnceVersion nuget package en su proyecto. Una vez que haya configurado su proyecto para verificar las actualizaciones y usar una versión mínima requerida, se encargará de asegurarse de que la versión mínima requerida siempre coincida con su versión actual (es decir, el usuario siempre se verá obligado a actualizar a la última versión).

Cuestiones relacionadas