Sicurezza e distribuzione di ClickOnce

ClickOnce è una tecnologia di distribuzione che consente di creare applicazioni basate su Windows ad aggiornamento automatico, installabili ed eseguibili con un'interazione minima da parte dell'utente. Visual Studio offre supporto completo per la pubblicazione e l'aggiornamento di applicazioni distribuite con la tecnologia ClickOnce se i progetti sono stati sviluppati con Visual Basic e Visual C#. Per informazioni sulla distribuzione di applicazioni Visual C++, vedere Distribuzione ClickOnce per applicazioni Visual C++.

La distribuzione clickOnce supera tre problemi principali nella distribuzione:

  • Difficoltà di aggiornamento delle applicazioni. Con la distribuzione di Microsoft Windows Installer, ogni volta che un'applicazione viene aggiornata, l'utente può installare un aggiornamento, un file msp e applicarlo al prodotto installato; con la distribuzione ClickOnce, è possibile fornire automaticamente gli aggiornamenti. Solo le parti dell'applicazione modificate vengono scaricate e quindi l'applicazione completa aggiornata viene reinstallata da una nuova cartella side-by-side.

  • Impatto sul computer dell'utente. Con la distribuzione di Windows Installer, le applicazioni spesso si basano su componenti condivisi, con il rischio di conflitti di controllo delle versioni; con la distribuzione ClickOnce, ogni applicazione è autonoma e non può interferire con altre applicazioni.

  • Autorizzazioni di sicurezza. La distribuzione di Windows Installer richiede autorizzazioni amministrative e consente solo l'installazione limitata dell'utente; La distribuzione ClickOnce consente agli utenti non amministratori di installare e concedere solo le autorizzazioni di sicurezza dall'accesso di codice necessarie per l'applicazione.

    In passato, questi problemi causavano talvolta agli sviluppatori di decidere di creare applicazioni Web invece di applicazioni basate su Windows, sacrificando un'interfaccia utente avanzata per facilitare l'installazione. Usando le applicazioni distribuite con ClickOnce, è possibile sfruttare al meglio entrambe le tecnologie.

Che cos'è un'applicazione ClickOnce?

Un'applicazione ClickOnce è qualsiasi windows Presentation Foundation (con estensione xbap), Windows Form (.exe), applicazione console (.exe) o soluzione Office (.dll) pubblicata con la tecnologia ClickOnce. È possibile pubblicare un'applicazione ClickOnce in tre modi diversi: da una pagina Web, da una condivisione file di rete o da supporti legacy, ad esempio un CD-ROM. Un'applicazione ClickOnce può essere installata nel computer di un utente finale ed eseguita localmente anche quando il computer è offline oppure può essere eseguito in modalità solo online senza installare definitivamente alcun elemento nel computer dell'utente finale. Per altre informazioni, vedere Scegliere una strategia di distribuzione ClickOnce.

Le applicazioni ClickOnce possono essere auto-aggiornabili; possono verificare la presenza di versioni più recenti man mano che diventano disponibili e sostituiscono automaticamente tutti i file aggiornati. Lo sviluppatore può specificare il comportamento di aggiornamento; un amministratore di rete può controllare le strategie di aggiornamento, ad esempio, rendendo obbligatorio un aggiornamento. È anche possibile eseguire il rollback degli aggiornamenti a una versione precedente dall'utente finale o da un amministratore. Per altre informazioni, vedere Scegliere una strategia di aggiornamento ClickOnce.

Poiché le applicazioni ClickOnce sono isolate, l'installazione o l'esecuzione di un'applicazione ClickOnce non può interrompere le applicazioni esistenti. Le applicazioni ClickOnce sono autonome; ogni applicazione ClickOnce viene installata ed eseguita da una cache sicura per utente, per applicazione. Le applicazioni ClickOnce vengono eseguite nelle aree di sicurezza Internet o Intranet. Se necessario, l'applicazione può richiedere autorizzazioni di protezione elevate. Per altre informazioni, vedere Proteggere le applicazioni ClickOnce.

Funzionamento della sicurezza ClickOnce

La sicurezza ClickOnce di base si basa su certificati, criteri di sicurezza di accesso al codice e richiesta di attendibilità ClickOnce.

Certificati

I certificati Authenticode vengono usati per verificare l'autenticità dell'autore dell'applicazione. Usando Authenticode per la distribuzione dell'applicazione, ClickOnce impedisce a un programma dannoso di rappresentare se stesso come un programma legittimo proveniente da un'origine stabilita e affidabile. Facoltativamente, i certificati possono essere usati anche per firmare i manifesti dell'applicazione e della distribuzione per dimostrare che i file non sono stati manomessi. Per altre informazioni, vedere ClickOnce e Authenticode. I certificati possono essere usati anche per configurare i computer client in modo che dispongano di un elenco di autori attendibili. Se un'applicazione proviene da un autore attendibile, può essere installata senza alcuna interazione dell'utente. Per altre informazioni, vedere Cenni preliminari sulla distribuzione di applicazioni attendibili.

Sicurezza dall'accesso di codice

La sicurezza dell'accesso al codice consente di limitare l'accesso al codice alle risorse protette. Nella maggior parte dei casi, è possibile scegliere le aree Internet o Intranet locale per limitare le autorizzazioni. Usare la pagina Sicurezza in Progettazione progetti per richiedere l'area appropriata per l'applicazione. È anche possibile eseguire il debug di applicazioni con autorizzazioni limitate per emulare l'esperienza dell'utente finale. Per altre informazioni, vedere Sicurezza dall'accesso di codice per applicazioni ClickOnce.

Nota

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

Richiesta di attendibilità ClickOnce

Se l'applicazione richiede più autorizzazioni rispetto all'area consentita, all'utente finale può essere richiesto di prendere una decisione di attendibilità. L'utente finale può decidere se applicazioni ClickOnce, ad esempio applicazioni Windows Form, applicazioni Windows Presentation Foundation, applicazioni console, applicazioni browser XAML e soluzioni Office sono attendibili per l'esecuzione. Per altre informazioni, vedere Procedura: Configurare il comportamento della richiesta di attendibilità ClickOnce.

Come funziona la distribuzione ClickOnce

L'architettura di distribuzione ClickOnce di base si basa su due file manifesto XML: un manifesto dell'applicazione e un manifesto della distribuzione. I file vengono usati per descrivere da dove vengono installate le applicazioni ClickOnce, il modo in cui vengono aggiornate e quando vengono aggiornate.

Pubblicare applicazioni ClickOnce

Il manifesto dell'applicazione descrive l'applicazione stessa. Sono inclusi gli assembly, le dipendenze e i file che costituiscono l'applicazione, le autorizzazioni necessarie e il percorso in cui saranno disponibili gli aggiornamenti. Lo sviluppatore di applicazioni crea il manifesto dell'applicazione usando la Pubblicazione guidata in Visual Studio (strumento di pubblicazione per .NET Core e .NET 5+) o il Strumento per la generazione e la modifica di manifesti (Mage.exe) in Windows Software Development Kit (SDK). Per altre informazioni, vedi:

Il manifesto di distribuzione descrive il modo in cui viene distribuita l'applicazione. Sono inclusi il percorso del manifesto dell'applicazione e la versione dell'applicazione che i client devono eseguire.

Nota

In ClickOnce per .NET Core 3.1 e .NET 5 o versione successiva usare dotnet-mage.exe anziché Mage.exe. Per altre informazioni, vedere ClickOnce per .NET.

Distribuire applicazioni ClickOnce

Dopo la creazione, il manifesto della distribuzione viene copiato nel percorso di distribuzione. Può trattarsi di un server Web, di una condivisione file di rete o di un supporto legacy, ad esempio un CD. Anche il manifesto dell'applicazione e tutti i file dell'applicazione vengono copiati in un percorso di distribuzione specificato nel manifesto della distribuzione. Tale posizione può essere la stessa posizione della distribuzione o un'altra posizione. Quando si usa la Pubblicazione guidata in Visual Studio, le operazioni di copia vengono eseguite automaticamente.

Installare applicazioni ClickOnce

Dopo la distribuzione nel percorso di distribuzione, gli utenti finali possono scaricare e installare l'applicazione facendo clic su un'icona che rappresenta il file manifesto della distribuzione in una pagina Web o in una cartella. Nella maggior parte dei casi, all'utente finale viene visualizzata una finestra di dialogo semplice che chiede all'utente di confermare l'installazione, dopo la quale l'installazione procede e l'applicazione viene avviata senza intervento aggiuntivo. Nei casi in cui l'applicazione richiede autorizzazioni elevate o se l'applicazione non è firmata da un certificato attendibile, la finestra di dialogo chiede all'utente di concedere l'autorizzazione prima che l'installazione possa continuare. Anche se le installazioni ClickOnce sono per utente, l'elevazione delle autorizzazioni può essere necessaria se sono presenti prerequisiti che richiedono privilegi di amministratore. Per altre informazioni sulle autorizzazioni elevate, vedere Protezione delle applicazioni ClickOnce.

I certificati possono essere considerati attendibili a livello di computer o aziendale, in modo che le applicazioni ClickOnce firmate con un certificato attendibile possano essere installate automaticamente. Per altre informazioni sui certificati attendibili, vedere Panoramica della distribuzione di applicazioni attendibili.

L'applicazione può essere aggiunta al menu Start dell'utente e al gruppo Installazione applicazioni nel Pannello di controllo. A differenza di altre tecnologie di distribuzione, non viene aggiunto alcun elemento alla cartella Programmi o al Registro di sistema e non sono necessari diritti amministrativi per l'installazione

Nota

È anche possibile impedire che l'applicazione venga aggiunta al menu Start e al gruppo Installazione applicazioni, in modo da comportarsi come un'applicazione Web. Per altre informazioni, vedere Scegliere una strategia di distribuzione ClickOnce.

Aggiornare le applicazioni ClickOnce

Quando gli sviluppatori di applicazioni creano una versione aggiornata dell'applicazione, generano un nuovo manifesto dell'applicazione e copiano i file in un percorso di distribuzione, in genere una cartella di pari livello nella cartella di distribuzione dell'applicazione originale. L'amministratore aggiorna il manifesto di distribuzione inserendo un riferimento alla posizione della nuova versione dell'applicazione.

Nota

La Pubblicazione guidata in Visual Studio può essere usata per eseguire questi passaggi. Per .NET Core e .NET 5+, lo strumento Pubblica fornisce questi passaggi.

Oltre alla posizione di distribuzione, il manifesto di distribuzione contiene anche una posizione di aggiornamento (una pagina Web o un file condiviso in rete) in cui l'applicazione verifica la disponibilità di versioni aggiornate. Le proprietà ClickOnce Publish vengono usate per specificare quando e con quale frequenza l'applicazione deve verificare la disponibilità di aggiornamenti. Il comportamento di aggiornamento può essere specificato nel manifesto della distribuzione oppure può essere presentato come scelte utente nell'interfaccia utente dell'applicazione tramite le API ClickOnce. Inoltre le proprietà di pubblicazione possono essere impiegate per rendere obbligatori o per annullare gli aggiornamenti a vantaggio di una versione precedente. Per altre informazioni, vedere Scelta di una strategia di aggiornamento ClickOnce.

Programmi di installazione di terze parti

È possibile personalizzare il programma di installazione clickOnce per installare componenti di terze parti insieme all'applicazione. È necessario avere il pacchetto ridistribuibile (.exe o .msi file) e descrivere il pacchetto con un manifesto del prodotto indipendente dalla lingua e un manifesto del pacchetto specifico della lingua. Per altre informazioni, vedere Creazione di pacchetti del programma di avvio automatico.

Strumenti ClickOnce

La tabella seguente illustra gli strumenti che è possibile usare per generare, modificare, firmare e firmare nuovamente i manifesti dell'applicazione e della distribuzione. Per .NET Core e .NET 5+, le opzioni simili agli attributi di MSBuild vengono impostate usando il profilo di pubblicazione.

Strumento Descrizione
Pagina Sicurezza, Creazione progetti Firma i manifesti dell'applicazione e della distribuzione. Per .NET Core e .NET 5+, queste impostazioni si trovano nel profilo di pubblicazione.
Pagina Pubblica, Creazione progetti Genera e modifica i manifesti dell'applicazione e della distribuzione per le applicazioni Visual Basic e Visual C#. Per .NET Core e .NET 5+, queste impostazioni si trovano nel profilo di pubblicazione.
Mage.exe (Strumento per la generazione e la modifica di manifesti) Genera i manifesti dell'applicazione e della distribuzione per le applicazioni Visual Basic, Visual C# e Visual C++.

Firma e firma nuovamente i manifesti dell'applicazione e della distribuzione.

Può essere eseguito da script batch e dal prompt dei comandi.
dotnetmage.exe (Strumento per la generazione e la modifica di manifesti) Genera i manifesti dell'applicazione e della distribuzione per le applicazioni .NET 5+ C# e Visual Basic. L'utilizzo equivale a Mage.exe.

Firma e firma nuovamente i manifesti dell'applicazione e della distribuzione.

Può essere eseguito da script batch e dal prompt dei comandi.
MageUI.exe (Strumento per la generazione e la modifica di manifesti, client grafico) Genera e modifica i manifesti dell'applicazione e della distribuzione.

Firma e firma nuovamente i manifesti dell'applicazione e della distribuzione.
Attività GenerateApplicationManifest Genera il manifesto dell'applicazione.

Può essere eseguito da MSBuild. Per altre informazioni, vedere Riferimenti a MSBuild.
Attività GenerateDeploymentManifest Genera il manifesto della distribuzione.

Può essere eseguito da MSBuild. Per altre informazioni, vedere Riferimenti a MSBuild.
Attività SignFile Firma i manifesti dell'applicazione e della distribuzione.

Può essere eseguito da MSBuild. Per altre informazioni, vedere Riferimenti a MSBuild.
Microsoft.Build.Tasks.Deployment.ManifestUtilities Sviluppare un'applicazione personalizzata per generare i manifesti dell'applicazione e della distribuzione.

La tabella seguente illustra la versione di .NET Framework necessaria per supportare le applicazioni ClickOnce in questi browser.

Browser Versione di .NET Framework
Firefox 2.0 SP1, 3.5 SP1, 4
Chrome 3.5
Microsoft Edge 3.5