Condividi tramite


Scegliere una strategia di aggiornamento ClickOnce

ClickOnce può fornire aggiornamenti automatici delle applicazioni. Un'applicazione ClickOnce legge periodicamente il file manifesto della distribuzione per verificare se sono disponibili aggiornamenti all'applicazione. In caso affermativo, la nuova versione dell'applicazione viene scaricata ed eseguita. Per maggiore efficienza, vengono scaricati solo i file che risultano modificati.

Quando si progetta un'applicazione ClickOnce, è necessario determinare quale strategia verrà usata dall'applicazione per verificare la disponibilità di aggiornamenti. È possibile utilizzare tre strategie di base: l'impostazione del controllo della disponibilità di aggiornamenti all'avvio dell'applicazione, l'impostazione del controllo dopo l'avvio dell'applicazione (esecuzione in un thread in background) o la creazione di una specifica interfaccia utente per gli aggiornamenti.

È inoltre possibile determinare la frequenza con cui verrà eseguito il controllo, nonché contrassegnare gli aggiornamenti come obbligatori.

Nota

Per gli aggiornamenti dell'applicazione è necessario disporre della connettività di rete. In assenza di una connessione di rete, l'applicazione verrà eseguita senza il controllo della disponibilità di aggiornamenti, indipendentemente dalla strategia di aggiornamento prescelta.

Nota

In .NET Framework 2.0 e .NET Framework 3.0, ogni volta che l'applicazione verifica la disponibilità di aggiornamenti, prima o dopo l'avvio o usando le <API xref:System.Deployment.Application> , è necessario impostare deploymentProvider nel manifesto della distribuzione. L'elemento deploymentProvider corrisponde in Visual Studio al campo Percorso di aggiornamento nella finestra di dialogo Aggiornamenti della scheda Pubblica. Questa regola è rilassata in .NET Framework 3.5. Per altre informazioni, vedere Distribuzione di applicazioni ClickOnce per i server di test e di produzione senza riassegnazione.

Verificare la disponibilità di aggiornamenti dopo l'avvio dell'applicazione

Se si utilizza questa strategia, l'applicazione tenterà di individuare e leggere il file manifesto di distribuzione in background, mentre è in esecuzione. Se è disponibile un aggiornamento, alla successiva esecuzione dell'applicazione verrà richiesto di scaricare e installare l'aggiornamento.

Questa strategia risulta più adatta a connessioni di rete con larghezza di banda limitata o ad applicazioni di maggiori dimensioni che possono richiedere lunghi tempi di download.

Per adottare questa strategia di aggiornamento, fare clic su Dopo l'avvio dell'applicazione nella sezione Scegliere quando controllare la disponibilità di aggiornamenti della finestra di dialogo Aggiornamenti applicazione. Specificare quindi un intervallo di aggiornamento nella sezione Specificare con quale frequenza controllare la disponibilità di aggiornamenti.

Questa operazione equivale a modificare l'elemento Update nel manifesto di distribuzione, come indicato di seguito:

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

Verificare la disponibilità di aggiornamenti prima dell'avvio dell'applicazione

La strategia predefinita consiste nel tentare di individuare e leggere il file manifesto di distribuzione prima dell'avvio dell'applicazione. Se si utilizza questa strategia, l'applicazione tenterà di individuare e leggere il file manifesto di distribuzione ogni volta che verrà avviata. Se non è disponibile un aggiornamento, verrà avviata la versione esistente dell'applicazione. Se è disponibile un aggiornamento necessario, verrà scaricato e avviato. Se un aggiornamento è disponibile ma non obbligatorio, all'utente viene assegnata una scelta se aggiornare o avviare la versione esistente.

Questa strategia risulta più adatta a connessioni di rete con larghezza di banda più ampia. Il ritardo nell'avvio dell'applicazione potrebbe essere eccessivamente lungo nel caso di connessioni con larghezza di banda limitata.

Per adottare questa strategia di aggiornamento, fare clic su Prima dell'avvio dell'applicazione nella sezione Scegliere quando controllare la disponibilità di aggiornamenti della finestra di dialogo Aggiornamenti applicazione.

Questa operazione equivale a modificare l'elemento Update nel manifesto di distribuzione, come indicato di seguito:

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

Nota

Per le applicazioni .NET Core 3.1 e .NET 5 e versioni successive, controllare gli aggiornamenti prima dell'avvio dell'applicazione è l'unica opzione di aggiornamento supportata.

Apportare gli aggiornamenti necessari

In alcuni casi può essere necessario richiedere agli utenti di eseguire una versione aggiornata dell'applicazione. È ad esempio possibile che sia stata apportata una modifica a una risorsa esterna, quale un servizio Web, che impedisce il corretto funzionamento dell'applicazione. In tal caso, può essere opportuno contrassegnare l'aggiornamento come obbligatorio e impedire che gli utenti eseguano la versione precedente.

Nota

Anche se è possibile impostare gli aggiornamenti come obbligatori mediante altre strategie, la selezione di Prima dell'avvio dell'applicazione è l'unico sistema per garantire che non venga eseguita una versione precedente. Se all'avvio viene rilevato l'aggiornamento obbligatorio, è necessario accettare l'aggiornamento o chiudere l'applicazione.

Per contrassegnare un aggiornamento come obbligatorio, fare clic su Specificare la versione minima richiesta per l'applicazione nella finestra di dialogo Aggiornamenti applicazione, quindi specificare la versione della pubblicazione (Principale, Secondario, Compila, Revisione) che indica il numero di versione più basso dell'applicazione che è possibile installare.

Questa operazione equivale a impostare l'attributo minimumRequiredVersion dell'elemento Deployment nel manifesto di distribuzione. Di seguito è riportato un esempio:

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

Specificare gli intervalli di aggiornamento

È possibile specificare anche la frequenza con cui dovrà essere effettuato il controllo della disponibilità di aggiornamenti, A tale scopo, specificare che il controllo della disponibilità degli aggiornamenti deve essere eseguito dall'applicazione dopo l'avvio come descritto in "Controllo della disponibilità di aggiornamenti dopo l'avvio dell'applicazione", precedentemente in questo argomento.

Per definire l'intervallo di aggiornamento, impostare le proprietà Specificare con quale frequenza controllare la disponibilità di aggiornamenti nella finestra di dialogo Aggiornamenti applicazione.

Questa operazione equivale a impostare gli attributi maximumAge e unit dell'elemento Update nel manifesto di distribuzione.

Ad esempio è possibile ripetere l'operazione ogni volta che viene eseguita l'applicazione, una volta alla settimana o una volta al mese. Se nel momento specificato non è disponibile una connessione di rete, la disponibilità di aggiornamenti verrà controllata alla successiva esecuzione dell'applicazione.

Nota

In ClickOnce per .NET Core e .NET 5 o versione successiva questa funzionalità non è supportata. Per altre informazioni, vedere ClickOnce per .NET.

Fornire un'interfaccia utente per gli aggiornamenti

Quando utilizza questa strategia, lo sviluppatore dell'applicazione fornisce un'interfaccia che consente all'utente di scegliere quando o con quale frequenza dovrà essere effettuato il controllo della disponibilità di aggiornamenti. È ad esempio possibile rendere disponibile un comando "Controlla aggiornamenti adesso" o una finestra di dialogo "Impostazioni di aggiornamento" con opzioni per la selezione di diversi intervalli di aggiornamento. Le API di distribuzione ClickOnce forniscono un framework per la programmazione della propria interfaccia utente di aggiornamento. Per altre informazioni, vedere lo spazio dei nomi System.Deployment.Application.

Nota

La ApplicationDeployment classe e le API nello System.Deployment.Application spazio dei nomi non sono supportate in .NET Core e .NET 5 e versioni successive. In .NET 7 è supportato un nuovo metodo di accesso alle proprietà di distribuzione dell'applicazione. Per altre informazioni, vedere Accedere alle proprietà di distribuzione ClickOnce in .NET. .NET 7 non supporta l'equivalente dei metodi ApplicationDeployment.

Se per controllare la disponibilità di aggiornamenti l'applicazione utilizza le API distribuzione, si consiglia di bloccare questo controllo come descritto nella sezione successiva "Blocco del controllo della disponibilità di aggiornamenti".

Questa strategia risulta più adatta quando sono necessarie strategie di aggiornamento differenti per utenti differenti.

Blocca il controllo degli aggiornamenti

È anche possibile impedire all'applicazione di effettuare il controllo della disponibilità di aggiornamenti. Ad esempio, si potrebbe avere una semplice applicazione che non verrà mai aggiornata, ma si vuole sfruttare la facilità di installazione fornito dalla distribuzione ClickOnce.

È anche necessario bloccare il controllo degli aggiornamenti se l'applicazione usa le API di distribuzione per eseguire i propri aggiornamenti; Vedere "Fornire un'interfaccia utente per gli aggiornamenti" più indietro in questo argomento.

Per bloccare il controllo della disponibilità di aggiornamenti, deselezionare la casella di controllo Controlla aggiornamenti dell'applicazione nella finestra di dialogo Aggiornamenti applicazione.

Per bloccare questo controllo, è anche possibile rimuovere il tag <Subscription> dal manifesto di distribuzione.

Elevazione delle autorizzazioni e aggiornamenti

Se una nuova versione di un'applicazione ClickOnce richiede un livello di attendibilità superiore rispetto alla versione precedente, ClickOnce chiederà all'utente se vuole che all'applicazione venga concesso questo livello di attendibilità superiore. Se non si accetta di concedere un livello di attendibilità più alto, l'aggiornamento non verrà installato. ClickOnce chiederà all'utente di installare nuovamente l'applicazione al successivo riavvio. Se non si accetta di concedere un livello di attendibilità più alto in questa fase e l'aggiornamento non è contrassegnato come obbligatorio, verrà eseguita la versione obsoleta dell'applicazione. Se tuttavia l'aggiornamento è obbligatorio, l'applicazione non verrà eseguita finché non si accetterà il livello di attendibilità più alto.

Se si utilizza la distribuzione di applicazioni attendibili, non verrà visualizzato alcun prompt relativo ai livelli di attendibilità. Per altre informazioni, vedere Cenni preliminari sulla distribuzione di applicazioni attendibili.