Portable Application in .NET per U3 Smart Technology
Ho parlato della tecnologia U3 Smart nel precedente post sull'argomento, concludendolo prima di andare a nanna con la promessa di svelare le mie prove di creazione di un esempio di applicazione in .NET, che potesse supportare la tecnologia U3 ed essere distribuita su Portable Devices.
Iniziamo ad approfondire un pò ciò che riguarda .NET dato che, una introduzione sui fini della tecnologia l'ho già fornita.
Caratteristica fondamentale e principale obiettivo delle applicazioni U3, è che sono progettate in modo tale che non lascino traccia delle proprie attività sul pc ospitante.
Vengono creati degli stati di Start Up e Shut Down in modo da personalizzare l'ambiente ospitante e ripulirlo all'eject del device U3.
Sul sito U3.com , è possibile scaricare l'SDK ed altri interessanti tool di cui parleremo.
Come iniziare : downloads
Prima di tutto facciamo il download del Development KIT SDK che fornisce informazioni utili su come la piattaforma U3 ospita una applicazione.
Insieme al Development KIT, è necessario fare il download del Manifest Creator (necessita di MSXML 4.0) che ha il compito di creare il Manifest che definisce le caratteristiche del software utili al processo di installazione...(percorso dell'icona, Vendor, Version...) e di U3Action, di cui parleremo più avanti, dall'area Tools del sito U3.com dove troverete anche l'SDK.
Le basi
Una comune Portable Application è un file eseguibile .exe. Per .NET l'unico inconveniete (risolvibile come vedremo) è che ci possono essere ovviamente problemi se sul pc ospitante manca il .NET Framework.
Come di solito avviene in questi casi, dovremo eseguire un controllo sulla presenza del Framework.Net e proporre l'installazione oppure l'annullamento dell'apertura dell'applicazione.
Nella filosofia della tecnologia U3 l'installazione dovrebbe partire dal device e l'applicazione essere rimossa all'eject dello stesso . Anche se in alcune circostanze potrebbe risultare utile far decidere all'utente se lasciare in modo permanente il framework sul pc per evitare l'installazione ogni volta.
Package U3
Una applicazione U3 è un pacchetto .zip ma con estensione .u3p (rinominiamo il file dopo aver fatto la compressione .zip in .u3p)
Il Package contiene delle directory di default:
- Manifest
- Host
- Device
- Data
Manifest contiene il manifest U3 e l'icona del software per il LaunchPad, usati durante l'installazione del software.
Host contiene gli eseguibili e tutto il necessario per la corretta esecuzione del software sul pc ospitante. Al lancio dell'applicazione U3 il launchPad copia i file necessari in una cartella temporanea del pc ospitante. E' qui che ospiteremo eventuali DLL aggiuntive. All'eject del device la dir temporanea verrà rimossa dal pc ospitante.
Device contiene file ausiliari come file di help etc.
Data contiene dati e file di configurazione persistenti non copiati sul pc ospitante.
Ciclo di Vita
Il ciclo di vita di una applicazione U3 è costituito da diverse azioni che si verificano durante l'installazione e l'esecuzione dell'applicazione. AppStart, AppStop, hostCleanUp sono solo alcune di queste e costituiscono le azioni minime da implementare per la gestione dell'applicazione su supporto U3. La cosa interessante è che ognuna di queste azioni può costituire un .exe specifico e personalizzato. In generale un file .exe standard è disponibile per le tre azioni minime appena descritte (U3Action.Exe di cui si fa download nell'area Tools del sito sopra indicato).
Hello World example! :-)
Hello U3 sarà il nome dell'applicazione di test che ha l'obiettivo di spiegare con un piccolo esempio le fasi necessarie a produrre Portable Applications.
Possiamo creare un'applicazione C# o VB.net chiamata HelloU3.
L'applicazione può essere costituta da un semplice bottone al cui click viene modificato il testo del bottone stesso .
private void button1_Click(object sender, EventArgs e)
{
button1.Text = "U3 Demo"
}
Creamo una nuova cartella HelloU3 e tre sottocartelle rispettivamente Device - Host - Manifest
Il build dell'applicazione in release ci permetterà di copiare il file HelloU3.exe generato e incollarlo nella cartella Device.
Nella cartella Host invece copieremo il file U3Action.exe standard, scaricato dall'area Tools del sito U3, che ci permette di usufruire delle Action di base dell'applicazione (AppStart, AppStop e hostCleanUp).
Nella cartella Manifest invece sarà presente il file .ico dell'applicazione e il file manifest.u3i generato dal Manifest Creator (figura 1.) o manualmente(file XML). Il file contiene i tag descrittivi che definiscono le caratteristiche minime necessarie ad installare il software. Il Manifest Creator ha un'interfaccia molto semplice che produce il file .u3i da inserire nel pacchetto U3 come descritto.

Figura 1. Manifest Creator per U3
[ manifest.u3i ].
<?xml version="1.0"?>
<!--Sample manifest file-->
<u3manifest version="1.0">
<application uuid="a3cd4067-9d86-49ab-8bc9-266806aeb332" version="1.0.0.0">
<icon>2 Fish.ico</icon>
<name>Hello World U3</name>
<description>Hello World U3</description>
<shortDescription>Hello World U3</shortDescription>
<vendor url="http://www.dotnetside.org/blogs/tiziana">Tiziana Loporchio</vendor>
<options>
<minFreeSpace>1</minFreeSpace>
</options>
<i18n />
</application>
<actions>
<hostCleanUp cmd="%U3_HOST_EXEC_PATH%\U3Action.exe">-hostCleanUp</hostCleanUp>
<appStop cmd="%U3_HOST_EXEC_PATH%\U3Action.exe">-appStop</appStop>
<appStart cmd="%U3_HOST_EXEC_PATH%\U3Action.exe">-appStart \"%U3_DEVICE_EXEC_PATH%\HelloU3.exe\"</appStart>
</actions>
</u3manifest>
Selezionate le tre cartelle ne faremo un unico file .zip tramite il Send To Compressed (zipped) folder e rinomineremo il file in HelloU3.u3p (estensione dei pacchetti U3).
A questo punto sarà possibile installare la nostra applicazione demo sul portable device utilizzando il LaunchPad da Add/Remove Programs ed iniziare ad utilizzare la nostra applicazione presente sulla smart drive (per la demo e per semplicità viene data per scontata la presenza del .NET framework.
Un piccolo video .swf è disponibile in download come allegato a questo post al fine di descrivere questa procedura di installazione che mi permetterà di ritrovare il Software creato nel pannello U3 Smart Programs della mia Smart Drive (Figura 2.).
Sto spesso pensando a come sarebbe utile che il mio RSS Reader potesse seguirmi dappertutto come applicazione U3.
Al lavoro 

Figura 2. U3 Smart Programs