2010-09-20 15 views
6

La nostra applicazione è .NET 3.5 distribuita tramite ClickOnce. Abbiamo appena aggiornato a .NET 4.0 e aggiornato le pre-richieste in modo appropriato.ClickOnce Upgrade Fails dopo la conversione in .NET 4

L'installazione funziona ancora correttamente per gli utenti principianti o gli utenti che installano tramite la pagina HTML di installazione. Installer automaticamente il framework .NET 4 per loro. Tuttavia, gli utenti che hanno già installato l'applicazione e tentano di eseguirlo tramite il menu di avvio ricevono il prompt:

"Impossibile installare o eseguire questa applicazione. Questa applicazione richiede che il sistema venga aggiornato alla versione di Common Language Runtime Microsoft 4.0.30319.0 Ulteriori informazioni possono essere trovate qui "(link al sito web di MS)

Perché non installa automaticamente .NET 4.0 come fa quando lo si esegue dalla pagina html? Non ha nemmeno la possibilità di scaricare gli aggiornamenti. Abbiamo bisogno di una soluzione perfetta per i nostri clienti per l'aggiornamento alla nuova applicazione senza re-installazione manuale.

risposta

4

Leggere prima this question and answer.

Ecco cosa sta succedendo nei tuoi scenari.

  1. "l'installazione funziona bene per gli utenti prima volta ..."
    In realtà, questo dovrebbe funzionare per qualsiasi utente che è andato alla pagina HTML, non solo prima volta gli utenti. La pagina html ha uno script che controlla la stringa user-agent per il framework 4.0. Se non ce l'hanno, dà loro una spiegazione e dice loro di installarlo da un collegamento al bootstrapper creato da Visual Studio (setup.exe). Questo è tutto separato da ClickOnce; ClickOnce fa nulla finché non fanno clic sul collegamento al file .application o eseguono il file setup.exe che avvia il file .application al termine.

  2. "Utenti che hanno già installato l'applicazione e tentano di eseguirla tramite il menu di avvio ..."
    Quello che succede qui è che l'applicazione si aggiorna correttamente. Ricevono l'ultima versione. Solo loro non possono eseguire l'ultima versione perché è un eseguibile .Net 4.0 e non hanno il framework 4.0.

A questo punto si dispone di alcune opzioni ...

  • conviverci. Dì agli utenti che hanno bisogno di visitare la pagina html per ottenere il framework 4.0.
  • Roll-back to 3.5 e aggiungi codice personalizzato alla tua app che controlla se 4.0 è installato o meno, avvisa l'utente e fornisce loro un collegamento al nuovo file 4.0 setup.exe. Quindi aggiornare a 4.0 alcune settimane più tardi, una volta che le persone hanno avuto la possibilità di installarlo. Questo potrebbe non funzionare bene se gli utenti eseguono l'app solo occasionalmente.
  • Roll-back to 3.5 e modificare gli aggiornamenti ClickOnce dopo l'avvio dell'applicazione anziché prima. Questo ti darà la possibilità di scrivere codice personalizzato per determinare se l'aggiornamento può accadere o meno e dirlo all'utente.
+0

Grazie per la spiegazione. –

2

Un'altra scelta è quella di tornare alla versione .NET 3.5 e aggiungere codice personalizzato che unisntalls programmaticamente l'applicazione e reinstallarlo da un URL diverso che ha .NET 4 come prerequisito. Le persone che hanno già .NET 4 riceveranno solo una nuova installazione del bit ClickOnce; persone con . NET 3.5 avrà disinstallato la loro app, installato .NET 4 e installata la nuova versione della loro app.

È possibile trovare il codice di disinstallazione/reinstallazione in questo articolo MSDN here.