Déterminer facilement la version de l’OS de son WP7

Il est temps pour Mango, la dernière version de l’OS du dernier téléphone Windows, d’entrer en scène avec son lot de nouveautés qui en raviront plus d’un.
Mais cette nouvelle version amène aussi une problématique jusqu’à lors peu ou pas pris en compte par les développeurs de la communauté Windows Phone 7.

En effet, tout le monde ne bénéficiera pas de la mise à jour de Mango tout de suite, d’ailleurs il y a encore quelques personnes qui ne possèdent même pas Nodo ,la version actuelle de l’OS (Hello Guillaume !).

Or dans nos programmes, on doit être capable de détecter la version de l’OS avant de pouvoir utiliser les capacités de Mango et Nodo ou non.

Il existe une variable d’environnement qui nous permet de détecter la version de l’OS en cours. Il s’agit de la propriété Version de OSVersion :

Version osVersion = System.Environment.OSVersion.Version;

Le test de cette propriété est un peu austaire.
j’ai donc crée, afin de rendre la détection plus aisée, une classe spécifique que j’ai appelé Wp7Version.

Vous pouvez tester les versions de votre OS comme suit :

            // test par "grosse" version
            if( Wp7Version.Current.IsMango == true )
            {
                // on est en Mango !
            }
            
            // test operateur de version
            if (Wp7Version.Current.Id >= Wp7VersionId.Nodo)
            {
                // on est au moins en Nodo !
            }

            // par fonctionnalité
            if (Wp7Version.Current.HasCopyPaste == true)
            {
                // on a le CopyPaste car on est au moins en Nodo
            }

En mode DEBUG vous avez accès à la propriété DebugVersion qui vous permet de forcer la propriété Current dans la version de votre choix. Pratique pour tester.

#if DEBUG
            Wp7Version.DebugVersion = Wp7Version.CreateFromId(Wp7VersionId.Mango);
#endif
            if( Wp7Version.Current.IsMango == true )
            {
                 // on est forcément dans Mango !
            }

Les différentes version détectées sont décrites dans l’énum Wp7VersionId :

    public enum Wp7VersionId
    {
        // Version inconnue
        Unknonwn = -1,
        // Emulateur
        Emulator,
        // La version originale
        OriginalPublicRelease,
        // Juste avant Nodo
        PreNodo,
        // Nodo
        Nodo,
        // Nodo avec mise à jour de la sécurité de IE
        NodoWithSecurityUpdate,
        // Mango
        Mango,
    }

Le numéro de version de Mango n’étant pas encore disponible, je l’ai renseigné comme version 7.0.5.0. En cas de changement je modifierai le numéro de version. La version de Mango a été renseignée comme version 7.1.0.0.

Vous trouverez ci-joint le code source de la classe Wp7Version et la solution complète.

2 Responses to Déterminer facilement la version de l’OS de son WP7

  1.  

    Je l’aurais un jour, je l’aurais…

  2. Déjà t’as la PréNodo 😀

     

leave your comment