posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

martedì 18 ottobre 2011

Essential WinRT parte 2: La registrazione

Visto che il mondo WinRT è un'evoluzione di quello COM, anche la registrazione è simile ma utilizza solo le chiavi di registro HKCU per cui non è necessario avere privilegi amministrativi.
Vediamo le chiavi di registry più interessanti:

La chiave HKCU\Software\Classes\ActivatableClasses\Package contiene la lista dei package registrati nel sistema.

Ogni sottochiave ha per nome il "Full Package Name" che è impostabile da Visual Studio 11 aprendo il file del manifest:

image

Di default il "Package name" è un guid ma è più conveniente utilizzare un nome completo di namespace e nome applicazione. Nel caso della app demo in javascript, ho impostato il nome a "IAmRaf.DemoApp" che troverò nel registry con alcune informazioni supplementari:

image

Sotto la chiave ActivatableClassId troviamo il nome della classe che si prende carico di "attivare" l'applicazione. Lo possiamo considerare il nostro punto di ingresso object oriented:

  • "ActivationType" specifica se il componente è attivabile in-process (0) oppure out-of-process (1).
  • "Server" specifica il nome della chiave Server sottostante (App.wwa)

Come da figura, App.wwa è il nome di default che è impostabile (solo via XML) nel manifest mentre "name" del tag "identity" è il "Package name" già modificato precedentemente.

image

Nel registry perciò possiamo vedere questi valori:

image

image

Sotto la chiave Server troviamo lo stesso "App.wwa" specificato sopra, dentro il quale troviamo la path completa all'exe del processo che fungerà da host.

  • Se realizziamo l'applicazione in C#/VB/C++ questo corrisponde all'exe che abbiamo generato da Visual Studio
  • Se invece è una applicazione javascript, questo specificherà un exe surrogato (analogo a dllhost dei tempi di COM)

Come si può vedere in figura l'host per l'applicazione di esempio è WWAHost.exe che è il generico host di una applicazione html5/javascript.

image

Il processo surrogato è importante per quei linguaggi che non possono provvedere al classico metodo "main". I progetti Metro realizzati con C# forniscono automaticamente il metodo main che istanzia la classe "App" (Xaml) e chiama il metodo statico Run. Applicazioni che utilizzano javascript necessitano un processo surrogato (WWAHost.exe) che sappia come renderizzare html5 e gestire gli script javascript. Explorer passa a WWAHost.exe l'application id (App.wwa nel nostro caso)via command line.

Il punto di ingresso dell'applicazione si trova sotto la chiave CustomAttributes. Le due immagini mostrano la differenza tra l'entry-point della demo in javascript e un'altra in C#:

imageimage

Dalle ricerche che ho fatto, sembra possibile creare una applicazione o provider di un contratto come dll in-process. In questo caso non esisterebbe la "main" e di conseguenza l'entry-point sarebbe fondamentale.

Il processo di registrazione non è interessante per lo sviluppo di applicazioni ma può essere fondamentale per motivi diagnostici e per capire il valore degli elementi del manifest.

Nel prossimo post vedremo i passi essenziali all'attivazione dell'applicazione.

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (0) |

Powered by:
Powered By Subtext Powered By ASP.NET