Condividi tramite


Problemi relativi alla sicurezza, al controllo delle versioni e ai manifesti nelle distribuzioni ClickOnce

ClickOnce presenta una serie di problemi relativi alla sicurezza, al controllo delle versioni delle applicazioni e alla sintassi e alla semantica dei manifesti che possono causare la mancata riuscita di una distribuzione ClickOnce.

ClickOnce e controllo dell'account utente di Windows Vista

In Windows Vista, per impostazione predefinita le applicazioni vengono eseguite con le autorizzazioni di utente standard, anche se l'utente corrente dispone di autorizzazioni di amministratore. Se l'esecuzione di un'azione in un'applicazione richiede autorizzazioni di amministratore, il sistema operativo richiede all'utente di immettere tali credenziali. Questa funzionalità denominata Controllo dell'account utente (UAC), impedisce alle applicazioni di apportare modifiche che possono influire sull'intero sistema operativo senza l'approvazione esplicita di un utente. Le applicazioni Windows dichiarano di richiedere tale elevazione di autorizzazioni specificando l'attributo requestedExecutionLevel nella sezione trustInfo del manifesto dell'applicazione.

A causa del rischio di esporre le applicazioni agli attacchi di elevazione di sicurezza, le applicazioni ClickOnce non possono richiedere l'elevazione dell'autorizzazione se UAC è attivato per il client. Qualsiasi applicazione ClickOnce che tenta di impostare l'attributo requestedExecutionLevel su requireAdministrator o su highestAvailable non verrà installata su Windows Vista.

In alcuni casi, è possibile tentare l'esecuzione dell'applicazione ClickOnce con autorizzazioni di amministratore a causa della logica di rilevamento del programma di installazione su Windows Vista. In questo caso, è possibile impostare l'attributo requestedExecutionLevel nel manifesto dell'applicazione su asInvoker. L'applicazione stessa verrà eseguita senza ricorrere all'elevazione. Visual Studio 2008 aggiungerà automaticamente tale attributo a tutti i manifesti dell'applicazione.

Se si sta sviluppando un'applicazione che richiede autorizzazioni di amministratore per l'intera durata dell'applicazione, è necessario distribuire l'applicazione utilizzando invece la tecnologia Windows Installer (MSI). Per ulteriori informazioni, vedere Windows Installer Basics.

Quote per applicazioni online e applicazioni parzialmente attendibili

Se l'applicazione ClickOnce viene eseguita in modalità online anziché essere installata, è necessario che venga rispettata la quota definita per le applicazioni online. Inoltre, un'applicazione di rete eseguita con un livello di attendibilità parziale, ad esempio con un set di autorizzazioni di sicurezza limitato, non può avere una dimensione superiore alla metà della quota.

Per ulteriori informazioni e per istruzioni su come cambiare la quota per le applicazioni online, vedere Cenni preliminari sulla cache di ClickOnce.

Problemi relativi al controllo delle versioni

Se all'assembly sono assegnati nomi sicuri e il numero di versione dell'assembly viene incrementato in base a un aggiornamento dell'applicazione, possono verificarsi dei problemi. Qualsiasi assembly compilato con un riferimento a un assembly con nome sicuro deve essere ricompilato, altrimenti tenterà di fare riferimento alla versione precedente. Il tentativo viene effettuato in quanto l'assembly sta utilizzando il valore della versione precedente nella richiesta di associazione.

Si supponga, ad esempio, di disporre di un assembly con nome sicuro in un progetto separato con numero di versione 1.0.0.0 e che, una volta compilato, l'assembly venga aggiunto come riferimento al progetto contenente l'applicazione principale. Se si aggiorna l'assembly, si incrementa il numero di versione impostando 1.0.0.1 e si tenta di distribuire l'aggiornamento senza ricompilare l'applicazione, quest'ultima non sarà in grado di caricare l'assembly in fase di esecuzione.

Questo errore può verificarsi solo se si modificano i manifesti ClickOnce manualmente. Non potrà mai verificarsi se la distribuzione viene generata mediante Visual Studio 2005.

Specifica di singoli assembly .NET Framework nel manifesto

L'applicazione non verrà caricata se una distribuzione ClickOnce è stata modificata manualmente per fare riferimento a una versione precedente di un assembly .NET Framework. Se ad esempio si aggiunge un riferimento all'assembly System.Net per una versione di .NET Framework precedente alla versione specificata nel manifesto, si verificherà un errore. Non tentare in genere di specificare riferimenti a singoli assembly .NET Framework, poiché la versione di .NET Framework in cui viene eseguita l'applicazione è specificata come dipendenza nel manifesto dell'applicazione.

Problemi relativi all'analisi dei manifesti

I file manifesto utilizzati da ClickOnce sono file XML il cui formato deve essere valido e corretto. In questi file devono essere rispettate le regole della sintassi XML e utilizzati solo elementi e attributi definiti nello schema XML appropriato.

Possono verificarsi problemi in un file manifesto se si seleziona per l'applicazione un nome contenente un carattere speciale, ad esempio una virgoletta singola o doppia. Il nome dell'applicazione fa parte dell'identità ClickOnce. ClickOnce non analizza attualmente identità che contengono caratteri speciali. Se l'applicazione non viene attivata, assicurarsi di aver utilizzato solo caratteri alfabetici e numerici per il nome e provare a ridistribuirla.

Se i manifesti di distribuzione o dell'applicazione vengono modificati manualmente, è possibile che vengano inavvertitamente danneggiati, impedendo così una corretta installazione di ClickOnce. È possibile eseguire il debug di questi errori in fase di esecuzione facendo clic su Dettagli nella finestra di dialogo Errori ClickOnce e leggendo il messaggio di errore nel log. Verrà fornita una delle seguenti informazioni:

  • La descrizione di un errore di sintassi, insieme all'indicazione del numero di riga e della posizione del carattere in cui è presente l'errore.

  • Il nome di un elemento o attributo utilizzato in modo non conforme allo schema del manifesto. Se ai manifesti è stato aggiunto manualmente del codice XML, sarà necessario confrontare le aggiunte effettuate con gli schemi dei manifesti. Per ulteriori informazioni, vedere Manifesto di distribuzione ClickOnce e Manifesto dell'applicazione ClickOnce.

  • Un conflitto tra ID. I riferimenti a dipendenze nel manifesto di distribuzione e in quello dell'applicazione devono essere univoci in tutti e due gli attributi name e publicKeyToken. Se entrambi gli attributi corrispondono per due elementi di un manifesto, l'analisi del manifesto non avrà esito positivo.

Precauzioni relative alla modifica manuale di manifesti o applicazioni

Quando si aggiorna il manifesto di un'applicazione, è necessario firmare nuovamente sia il manifesto dell'applicazione che quello di distribuzione. Il manifesto di distribuzione contiene un riferimento al manifesto dell'applicazione che include l'hash del file e la firma digitale.

Precauzioni relative all'utilizzo della proprietà deploymentProvider

Il manifesto di distribuzione di ClickOnce dispone di una proprietà deploymentProvider che punta al percorso completo dal quale l'applicazione deve essere installata e servita.

<deploymentProvider codebase="http://myserver/myapp.application" />

Questo percorso viene impostato in fase di creazione dell'applicazione ClickOnce ed è obbligatorio per le applicazioni installate. Si tratta del percorso standard da cui il programma di installazione di ClickOnce installerà l'applicazione e in cui verificherà se sono disponibili aggiornamenti. Di conseguenza, se si utilizza il comando xcopy per copiare un'applicazione ClickOnce in un percorso diverso, ma non si modifica il valore della proprietà deploymentProvider, ClickOnce continuerà a fare riferimento al percorso originale per tentare di scaricare l'applicazione.

Se si desidera spostare o copiare un'applicazione, è necessario aggiornare anche il percorso definito nella proprietà deploymentProvider in modo che il client esegua effettivamente l'installazione dal nuovo percorso. L'aggiornamento del percorso è un'operazione delicata se sono presenti applicazioni installate. Per le applicazioni online che vengono sempre avviate tramite l'URL originale, l'impostazione della proprietà deploymentProvider è facoltativa. Se deploymentProvider è impostata, ne verrà utilizzato il valore. In caso contrario, come URL di base per il download dei file dell'applicazione verrà utilizzato l'URL di avvio dell'applicazione.

Nota

Ogni volta che si aggiorna il manifesto, è necessario anche firmarlo nuovamente.

Vedere anche

Concetti

Risoluzione dei problemi relativi alle distribuzioni ClickOnce

Protezione di applicazioni ClickOnce

Scelta di una strategia di distribuzione ClickOnce