Domanda

È possibile introdurre la funzionalità ClickOnce in un'applicazione esistente?

Lo scenario è: la versione 1.0 è già installata nei locali del client. Vorrei inviare loro un nuovo pacchetto di installazione che aggiornerà a 1.1, che ha la funzionalità ClickOnce, rendendo quindi futuri aggiornamenti & Quot; senza sforzo & Quot ;.

A parte questo, ci sono altre soluzioni a questo tipo di problema?

PS: l'applicazione originale è stata sviluppata con Visual & nbsp; Studio & nbsp ; 2005 (ovvero .NET 2.0). Sto utilizzando Visual & Nbsp; Studio & Nbsp; 2008 ora .

È stato utile?

Soluzione

No, non è possibile con uno scenario di distribuzione ClickOnce standard.

ClickOnce è un'installazione sandbox sul lato client. Non saprà della versione 1.0 che è già installata. Controllerà semplicemente se il suo GUID è già stato installato tramite ClickOnce e in tal caso aggiornalo, ma solo se la versione precedente è stata distribuita tramite ClickOnce.

Nel tuo caso, se l'utente ha installato la versione 1.1, entrambe le versioni verranno installate fianco a fianco. La versione 1.0 non verrà aggiornata, poiché ClickOnce non sa che esiste un'associazione poiché è stata distribuita tramite un metodo diverso. Se non vogliono più la versione 1.0, dovranno rimuoverla manualmente. Dopo aver distribuito la versione 1.1 tramite ClickOnce, gli aggiornamenti successivi funzioneranno correttamente.

Non pensare a ClickOnce come qualcosa che stai " incluso " pensalo come un metodo di distribuzione.

In alternativa:

Dovrei chiarire che ciò che stai cercando non è possibile con l'implementazione ClickOnce standard. Tuttavia, hai detto che hai intenzione di inviare loro un file di installazione iniziale. In tal caso potresti avere una soluzione alternativa possibile:

  1. Script il file di installazione per rimuovere automaticamente l'installazione della versione 1.0
  2. Script il file di installazione per avviare l'installazione ClickOnce.

Per gli aggiornamenti successivi, è sufficiente puntare l'utente sul " puro " Fai clic su Un pacchetto di installazione e gli aggiornamenti dovrebbero funzionare correttamente.

Altri suggerimenti

Assicurati di testare molto attentamente la tua distribuzione ClickOnce nell'ambiente del tuo client. Sto omettendo i dettagli qui, ma ci sono molti problemi con ClickOnce. Ho supportato un'applicazione ClickOnce da 3,5 anni e ho riscontrato molti problemi con i manifest, dovendo eliminare manualmente le cartelle di archiviazione sandbox in modo che gli aggiornamenti si installino correttamente, ecc. - Se cerchi online i problemi di ClickOnce troverai abbastanza alcuni problemi nei forum MSDN e altrove, molti dei quali MS non sembra voler risolvere poiché sono stati aperti da Visual & nbsp; Studio & nbsp; 2005.

Inoltre, sii consapevole di un potenziale gotcha in ClickOnce prima di .NET 3.5 SP1. Se non si dispone del proprio certificato di distribuzione software da un CA riconosciuto dalle macchine client, Visual Studio utilizza un & Quot; temporaneo & Quot; certificato (* .pfx) che scade un anno dopo la creazione. Dopo tale periodo, le successive versioni di aggiornamento probabilmente non verranno installate e mostreranno agli utenti messaggi spaventosi sulla scadenza del certificato. Microsoft ha risolto questo problema in .NET 3.5 SP1, ma è stato necessario esaminare le note sulla versione per trovare i commenti secondo cui i certificati temporanei o permanenti non erano più necessari. Quindi, se non disponi di un certificato CA pubblico e supporterai l'applicazione per un po 'di tempo, assicurati di utilizzare .NET 3.5 SP1.

A seconda della complessità del tuo scenario, dato che chiedi altre soluzioni, finiamo per usare un " tira il tuo " un approccio simile a questo.

Ogni versione aggiornata incrementa la versione dell'assembly secondo necessità.

Build contiene un passaggio personalizzato per generare automaticamente un file con la nuova versione dell'assembly.

Il progetto di distribuzione copia il file della versione nella directory di output con MSI.

Ogni volta che viene eseguita l'applicazione installata, confronta la propria versione con la versione nel file versione nella cartella deploy. Se differiscono, esci dall'applicazione e avvia MSI, che impostiamo per rimuovere automaticamente le versioni precedenti dell'applicazione.

Questo è un " ClickOnce del povero " per un ambiente in cui non ci sono strumenti di distribuzione delle applicazioni di sorta (nemmeno la pubblicità delle applicazioni AD), quindi abbiamo fatto. Ancora una volta, questo approccio potrebbe non essere abbastanza sofisticato per te, ma funziona bene per noi.

Buona fortuna.

Il modo migliore che conosco sarebbe di inviare loro un programma di installazione che:

  1. Disinstalla la versione corrente
  2. Avvia l'applicazione ClickOnce residente sul Web.

Con questo, avresti un'esperienza di aggiornamento ragionevole e da lì in poi, ClickOnce può gestire gli aggiornamenti da solo.

Penso in questo caso il " il più semplice " la soluzione sarebbe quella di utilizzare la distribuzione ClickOnce per la versione 1.1 e come parte di quella nuova versione dell'applicazione hai un file di configurazione predefinito con un flag di prima esecuzione di qualche tipo che, quando viene eseguito per la prima volta dall'utente e vede quel flag di prima esecuzione, cerca la versione precedente, copia su qualsiasi impostazione di configurazione esistente e quindi disinstalla automaticamente la versione precedente.

Richiederebbe un po 'di programmazione da parte tua, ma è la soluzione su cui ho optato in un precedente lavoro per svolgere un'attività simile per aggiornare un'applicazione di utilità per utilizzare Clickonce dove prima non aveva.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top