Problemi relativi alla sicurezza, al controllo delle versioni e ai manifesti nelle distribuzioni ClickOnce
Esistono diversi problemi relativi alla sicurezza ClickOnce, al controllo delle versioni delle applicazioni e alla sintassi del manifesto e alla semantica che possono causare un errore di distribuzione ClickOnce.
Controllo dell'account utente ClickOnce e Windows
In Windows Vista e versioni successive di Windows, le applicazioni per impostazione predefinita vengono eseguite come utente standard, anche se l'utente corrente ha eseguito l'accesso con un account con autorizzazioni di amministratore. Se un'applicazione deve eseguire un'azione che richiede autorizzazioni di amministratore, indica al sistema operativo che chiede all'utente di immettere le credenziali di amministratore. Questa funzionalità, denominata Controllo dell'account utente, impedisce alle applicazioni di apportare modifiche che possono influire sull'intero sistema operativo senza l'approvazione esplicita di un utente. Le applicazioni Windows dichiarano che richiedono questa elevazione delle autorizzazioni specificando l'attributo requestedExecutionLevel
nella trustInfo
sezione del manifesto dell'applicazione.
A causa del rischio di esposizione delle applicazioni ad attacchi di elevazione della sicurezza, le applicazioni ClickOnce non possono richiedere l'elevazione delle autorizzazioni se il controllo dell'account utente è abilitato per il client. Qualsiasi applicazione ClickOnce che tenta di impostarne requestedExecutionLevel
l'attributo su requireAdministrator
o highestAvailable
non verrà installata in Windows Vista e versioni successive.
In alcuni casi, l'applicazione ClickOnce potrebbe tentare di eseguire con autorizzazioni di amministratore a causa della logica di rilevamento del programma di installazione in Windows. In questo caso, è possibile impostare l'attributo requestedExecutionLevel
nel manifesto dell'applicazione su asInvoker
. In questo modo l'applicazione stessa verrà eseguita senza elevazione dei privilegi. Visual Studio aggiunge automaticamente questo attributo a tutti i manifesti dell'applicazione.
Se si sviluppa un'applicazione che richiede autorizzazioni di amministratore per l'intera durata dell'applicazione, è consigliabile distribuire l'applicazione usando invece la tecnologia Windows Installer (MSI). Per altre informazioni, vedere Nozioni di base su Windows Installer.
Quote di applicazioni online e applicazioni parzialmente attendibili
Se l'applicazione ClickOnce viene eseguita online anziché tramite un'installazione, deve rientrare nella quota impostata per le applicazioni online. Inoltre, un'applicazione di rete eseguita con attendibilità parziale, ad esempio con un set limitato di autorizzazioni di sicurezza, non può essere superiore alla metà delle dimensioni della quota.
Per altre informazioni e istruzioni su come modificare la quota dell'applicazione online, vedere Panoramica della cache ClickOnce.
Problemi relativi al controllo delle versioni
È possibile che si verifichino problemi se si assegnano nomi sicuri all'assembly e si incrementa il numero di versione dell'assembly per riflettere un aggiornamento dell'applicazione. Qualsiasi assembly compilato con un riferimento a un assembly con nome sicuro deve essere ricompilato oppure l'assembly tenterà di fare riferimento alla versione precedente. L'assembly tenterà di eseguire questa operazione perché l'assembly usa il valore della versione precedente nella richiesta di associazione.
Si supponga, ad esempio, di avere un assembly con nome sicuro nel proprio progetto con la versione 1.0.0.0. Dopo aver compilato l'assembly, aggiungerlo come riferimento al progetto che contiene l'applicazione principale. Se si aggiorna l'assembly, incrementare la versione a 1.0.0.1 e provare a distribuirla senza ricompilare l'applicazione, l'applicazione non sarà in grado di caricare l'assembly in fase di esecuzione.
Questo errore può verificarsi solo se si stanno modificando manualmente i manifesti ClickOnce; questo errore non dovrebbe verificarsi se si genera la distribuzione usando Visual Studio.
Specificare singoli assembly .NET Framework nel manifesto
L'applicazione non verrà caricata se è stata modificata manualmente una distribuzione ClickOnce per fare riferimento a una versione precedente di un assembly .NET Framework. Ad esempio, se è stato aggiunto un riferimento all'assembly System.Net per una versione di .NET Framework prima della versione specificata nel manifesto, si verificherà un errore. In generale, non è consigliabile tentare di specificare riferimenti a singoli assembly .NET Framework, perché la versione di .NET Framework in cui viene eseguita l'applicazione viene specificata come dipendenza nel manifesto dell'applicazione.
Problemi di analisi del manifesto
I file manifesto utilizzati da ClickOnce sono file XML e devono essere entrambi ben formati e validi: devono rispettare le regole della sintassi XML e usare solo elementi e attributi definiti nello schema XML pertinente.
Un elemento che può causare problemi in un file manifesto sta selezionando un nome per l'applicazione che contiene un carattere speciale, ad esempio una virgoletta singola o doppia. Il nome dell'applicazione fa parte dell'identità ClickOnce. ClickOnce attualmente non analizza le identità che contengono caratteri speciali. Se l'applicazione non riesce ad attivarsi, assicurarsi di usare solo caratteri alfabetici e numerici per il nome e tentare di distribuirla di nuovo.
Se sono stati modificati manualmente i manifesti della distribuzione o dell'applicazione, è possibile che siano stati danneggiati involontariamente. Il manifesto danneggiato impedirà un'installazione ClickOnce corretta. È possibile eseguire il debug di tali errori in fase di esecuzione facendo clic su Dettagli nella finestra di dialogo Errore ClickOnce e leggendo il messaggio di errore nel log. Il log elenca uno dei messaggi seguenti:
Descrizione dell'errore di sintassi e del numero di riga e della posizione del carattere in cui si è verificato l'errore.
Nome di un elemento o di un attributo utilizzato in violazione dello schema del manifesto. Se il codice XML è stato aggiunto manualmente ai manifesti, sarà necessario confrontare le aggiunte agli schemi del manifesto. Per altre informazioni, vedere Manifesto della distribuzione ClickOnce e Manifesto dell'applicazione ClickOnce.
Conflitto di ID. I riferimenti alle dipendenze nella distribuzione e nei manifesti dell'applicazione devono essere univoci sia nei relativi
name
attributi chepublicKeyToken
in . Se entrambi gli attributi corrispondono tra due elementi all'interno di un manifesto, l'analisi del manifesto non avrà esito positivo.
Precauzioni quando si modificano manualmente manifesti o applicazioni
Quando si aggiorna un manifesto dell'applicazione, è necessario firmare nuovamente sia il manifesto dell'applicazione che il manifesto della distribuzione. Il manifesto della distribuzione contiene un riferimento al manifesto dell'applicazione che include l'hash del file e la relativa firma digitale.
Precauzioni con l'utilizzo del provider di distribuzione
Il manifesto della distribuzione ClickOnce ha una deploymentProvider
proprietà che punta al percorso completo del percorso da cui deve essere installata e usata l'applicazione:
<deploymentProvider codebase="http://myserver/myapp.application" />
Questo percorso viene impostato quando ClickOnce crea l'applicazione ed è obbligatorio per le applicazioni installate. Il percorso punta al percorso standard in cui il programma di installazione ClickOnce installerà l'applicazione da e cercherà gli aggiornamenti. Se si usa il comando xcopy per copiare un'applicazione ClickOnce in un percorso diverso, ma non si modifica la deploymentProvider
proprietà, ClickOnce continuerà a fare riferimento al percorso originale quando tenta di scaricare l'applicazione.
Se si vuole spostare o copiare un'applicazione, è necessario aggiornare anche il deploymentProvider
percorso, in modo che il client venga effettivamente installato dal nuovo percorso. L'aggiornamento di questo percorso è principalmente un problema se sono state installate applicazioni. Per le applicazioni online che vengono sempre avviate tramite l'URL originale, l'impostazione deploymentProvider
di è facoltativa. Se è impostato, verrà rispettato. In deploymentProvider
caso contrario, l'URL usato per avviare l'applicazione verrà usato come URL di base per scaricare i file dell'applicazione.
Nota
Ogni volta che si aggiorna il manifesto, è necessario firmarlo di nuovo.
Contenuto correlato
Risolvere i problemi relativi alle distribuzioni ClickOnce protette per leapplicazioniClickOnce Scegliere una strategia di distribuzione ClickOnce