#165 - Personalizzare l'installazione di applicazioni ClickOnce
di Cristian Civera, in .NET Framework, 19 febbraio 2010
Archiviato in: .NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, Deployment
ClickOnce è una tecnologia che semplifica notevolmente la distribuzione delle applicazioni .NET mediante supporti fisici o web. E' completamente integrato in Visual Studio e si occupa di molteplici aspetti:
- Gestione dei permessi e dei requisiti dell'applicazione;
- Installazione senza diritti amministrativi;
- Aggiornamenti automatici;
- Controllo dell'integrità e del versioning;
Il tutto è supportato poi da API .NET contenute nell'assembly System.Deployment che permettono di intervenire, di monitorare gli aggiornamenti e di eseguirli in background. A causa della sua semplicità però fornisce un processo di installazione limitato nelle azioni che può eseguire e tra le richieste più comuni vi è senz'altro la necessità di personalizzare l'interfaccia di installazione.
Il motore non fornisce un sistema di template per la personalizzazione, come avviene per altri framework, ma permette la sostituzione totale dell'interfaccia. Per farlo bisogna prima di tutto recuperare il file app.manifest contenuto nella cartella Properties dell'applicazione; se non è presente è possibile farlo generare da Visual Studio andando nella sezione Security nelle proprietà del progetto
Localizzato il file all'interno del tag assembly va inserito il tag customUX:
<asmv1:assembly manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <!-- omesso --> </trustInfo> <entryPoint xmlns="urn:schemas-microsoft-com:asm.v2"> <customUX xmlns="urn:schemas-microsoft-com:clickonce.v1" /> </entryPoint> </asmv1:assembly>
Con questo tag si impedisce di installare l'applicazione direttamente eseguendo il file .application. A questo punto occorre sviluppare un secondo applicativo che ha il solo scopo di gestire l'installazione mediante ClickOnce. Indipendentemente dall'interfaccia che si vuole utilizzare occorre sfruttare la classe InPlaceHostingManager per scaricare il manifest e mostrare i progressi di installazione mediante gli eventi GetManifestCompleted, DownloadProgressChanged e DownloadApplicationCompleted.
manager = new InPlaceHostingManager(new Uri(manifestUri), false); manager.GetManifestCompleted += new EventHandler<GetManifestCompletedEventArgs>(manager_GetManifestCompleted); manager.DownloadApplicationCompleted += new EventHandler<DownloadApplicationCompletedEventArgs>(manager_DownloadApplicationCompleted); // Ottengo il manifesto manager.GetManifestAsync();
Ottenuto il manifest è possibile leggerlo e asserire che le dipendenze e i requisiti di sicurezza sono soddisfatti. Successivamente con DownloadApplicationAsync si installa l'applicazione.
void manager_GetManifestCompleted(object sender, GetManifestCompletedEventArgs e) { // Requisiti soddisfatti manager.AssertApplicationRequirements(true); // Installo l'applicazione manager.DownloadApplicationAsync(); }
Al termine dell'installazione poiché il manifest è stato marcato con il customUX (operazione non obbligatoria) non si troverà nessuna voce di installazione nel pannello di controllo del sistema operativo, ne alcun collegamento sul desktop o nei menu. E' compito dell'installatore personalizzato eseguire eventualmente queste operazioni.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
-
#161 - Clonare e manipolare Message in WCF
-
#171 - Creare un task personalizzato per msbuild
-
#148 - Scoprire le pagine attualmente più richieste su IIS con LINQ e Microsoft.Web.Administration
-
patch per l'intellisense di #vs 2010 RC disponibile su http://u.aspitalia.com/e3 - tutto sulla RC di #netfx 4: http://u.aspitalia.com/et
-
Quando usare gli optional parameter di C# 4
-
Interoperabilità con WCF: invocare servizi da PHP e Flash
-
3 giorni al lancio di #netfx4 e #vs10ita. segui il nostro speciale ed informati sul nostro evento a Firenze su http://u.aspitalia.com/gh
-
#adonetdataservices v1.5 CTP 2 con supporto al #databinding per #wpf e #silverlight su http://u.aspitalia.com/ac
-
#173 - Usare i WCF Data Services con liste e entità personalizzate
-
Open Data Protocol e WCF Data Services
-
Finalmente disponibile ASP.NET MVC 2 in RTM
-
Visual Studio 2010 e .NET Framework 4.0: beta 2 e data di release RTM

Commenti
mi piace
non mi piace
Facebook
Twitter










