2010-09-20 21 views
6

Nuestra aplicación es .NET 3.5 implementada a través de ClickOnce. Acabamos de actualizar a .NET 4.0 y actualizamos las pre-condiciones de manera apropiada.La actualización ClickOnce falla después de convertir a .NET 4

La instalación sigue funcionando correctamente para usuarios nuevos o usuarios que instalan a través de la página HTML de configuración. Instalará automáticamente el framework .NET 4 para ellos. Sin embargo, los usuarios que ya tienen la aplicación instalada e intentan ejecutarla a través del menú de inicio reciben el mensaje:

"No se puede instalar o ejecutar esta aplicación .Esta aplicación requiere que su sistema se actualice a la versión de Microsoft Common Language Runtime 4.0.30319.0. Más información se puede encontrar aquí "(enlace al sitio web de MS)

¿Por qué no instala automáticamente .NET 4.0 como lo hace cuando lo ejecuta desde la página html? Ni siquiera da la opción de descargar actualizaciones. Necesitamos una solución perfecta para nuestros clientes para actualizar a la nueva aplicación sin tener que volver a instalarla manualmente.

Respuesta

4

Lea this question and answer primero.

Esto es lo que está sucediendo en sus escenarios.

  1. "La instalación funciona bien para los usuarios de primera vez ..."
    En realidad, esto funcionaría para cualquier usuario que se fue a la página HTML, no sólo a los usuarios de primera vez. La página html tiene una secuencia de comandos que comprueba su cadena de agente de usuario para el marco 4.0. Si no lo tienen, les da una explicación y les dice que lo instalen desde un enlace al programa de arranque creado por Visual Studio (setup.exe). Todo esto está separado de ClickOnce; ClickOnce hace nada hasta que hagan clic en el enlace del archivo .application o ejecuten setup.exe que inicia el archivo .application cuando termina.

  2. "Usuarios que ya tienen la aplicación instalada e intentan ejecutarla mediante el menú de inicio ..."
    Lo que ocurre aquí es que la aplicación se actualiza correctamente. Obtienen la última versión. Solo que no pueden ejecutar la última versión porque es un ejecutable .NET 4.0 y no tienen el marco 4.0.

En este punto usted tiene algunas opciones ...

  • vivir con ella. Indique a los usuarios que necesitan visitar la página html para obtener el Marco 4.0.
  • Desplácese hasta 3.5 y agregue código personalizado a su aplicación que verifique si 4.0 está instalado o no, advierte al usuario y le da un enlace al nuevo archivo setup.exe 4.0. Luego actualice a 4.0 unas semanas más tarde una vez que las personas hayan tenido la oportunidad de instalarlo. Es posible que esto no funcione si sus usuarios solo ejecutan la aplicación ocasionalmente.
  • Desplácese hasta 3.5 y cambie las actualizaciones de ClickOnce para que sucedan después de que se inicie la aplicación en lugar de antes. Esto le dará la oportunidad de escribir código personalizado para determinar si la actualización puede suceder o no y decirle al usuario.
+0

Gracias por la explicación. –

2

Otra opción es volver a la versión .NET 3.5 y agregar un código personalizado que programáticamente inicia la aplicación y la reinstala desde una URL diferente que tiene .NET 4 como requisito previo. Las personas que ya tienen .NET 4 obtendrán una nueva instalación del bit ClickOnce; personas con . NET 3.5 tendrá su aplicación desinstalada, se instalará .NET 4 y se instalará la nueva versión de su aplicación.

Puede encontrar el código de desinstalación/reinstalación en este artículo de MSDN here.

Cuestiones relacionadas