Au fil des flows

10jan/1259

Fonctionnement de la base de Registre pour les applications 32bits sous Win7 64bits

Posted by Fabien Arcellier

Travaillant sur le deploiement d'un applicatif, j'ai été surpris de ne pas trouver les elements que j'attendai dans la base de registre.
En faite, pour les application émulées en 32bits sur un OS, les clefs de la base de registre sont traitées differemment.

La difference se fait au dela des dossiers racines :

  • HKEY_LOCAL_MACHINE
  • HKEY_CURRENT_USER

Vous trouverez sous chacun d'eux un dossier Wow6432Node, c'est dans ce sous dossier que tout est stocké pour les applications 32bits.

 

Capture du dossier Wow6432Node

Capture du dossier Wow6432Node

Voici un quelques exemples de correspondance :

Application64bits Application 32bits
Logiciel installé sur la machine HKEY_LOCAL_MACHINE\SOFTWARE\$NomSoftware HKEY_LOCAL_MACHINE\Wow6432Node\SOFTWARE\$NomSoftware
Logiciel installé dans l'espace utilisateur HKEY_CURRENT_USER\SOFTWARE\$NomSoftware HKEY_CURRENT_USER\Wow6432Node\SOFTWARE\$NomSoftware

Fabien

Remplis sous: Non classé 59 Commentaires
2jan/120

Quel role pour un installeur sous Windows ?

Posted by Fabien Arcellier

Aujourd'hui, j'ai eu à me plonger dans une problématique bien connue des gens qui développent des logiciels pour Windows.
Packager l'application de façon à ce que n'importe quel utilisateur puisse l'installer et la lancer en quelques clics.

Créer un installeur est une des briques essentielles pour rendre un logiciel plus accessible. Grace à lui, vous disposez au bout de 2 petites minutes d'un logiciel prêt à être utilisé. C'est un sacré confort. En plus quand l'utilisateur de votre logiciel ne souhaite plus l'utiliser, la désinstallation offre aussi un confort notoire (a condition de ne pas tricher la dessus, on a déjà vu quelques horreurs).

Le déploiement d'un logiciel est devenu un calvaire pour le développeur au fur et à mesure des versions de Windows. Cependant c'est un point sur lequel, il n'y aura pas de retour en arrière. La sécurité a trop pâti du fait que n'importe quelle logiciel avait un accès illimité aux ressources et aux données de la machine. Il y'a eu plusieurs tentatives pour simplifier ce processus mais aucune jusqu'à récemment n'a montré de résultats vraiment probants.
L'apparition des markets semblent amener du grain à moudre. On peut s'attendre à les voir évoluer vers l'univers PC rapidement. On peut citer notamment l'apparition d'Intel App Up qui va dans ce sens. Etrangement, ces plateformes fonctionnent bien car elles restreignent la liberté de l'utilisateur. Il n'a plus à choisir où il souhaite installer son programme, où il veut stocker ses données. Etant donné que l'informatique est à l'origine un monde ouvert aux bricoleurs, il fallait au moins un nouveau marché comme celui des smartphones et des tablettes pour que cette approche soit acceptée et puisse se développer.

Mais au juste quel est le role d'un installeur ? A quel moment laisse t'il la place à l'application ?

Role numéro 1, un installeur doit permettre de placer les fichiers et les dossiers de façon à ce que l'application puisse fonctionner. Dans une maison, si vous placez une cuisinière au milieu d'une chambre, vous aurez du mal à la faire fonctionner. Avec un peu de chance, elle fonctionnera en mode dégradé si elle est électrique. Tant que je lui en demande pas trop, le fusible va tenir. Si elle est au gaz, ça va être dur de la relier à moins de recommencer les grands travaux.

Role numero 2, un installeur permet de créer les raccourcis pour lancer l'application. Il s'agit de créer un dispositif permettant de réaliser les actions courantes plus facilement pour l'utilisateur. Mais quels sont les types de raccourcis au juste ? On en compte 3 types :

  • Dans le menu démarrer : Celui là est indispensable. C'est l'un des seuls où vous pouvez vous permettre de ne pas demander l'accord de l'utilisateur pour le mettre en place
  • Sur le bureau : C'est un confort pour l'utilisateur. Cependant, je vous recommande de lui laisser le choix. Par défaut, je préfère ne pas l'activer
  • Dans la barre de lancement rapide : Depuis windows 7, elle est fusionnée avec la barre des tâches. C'est aussi un confort. Par défaut je préfère ne pas l'active

Il y'en a d'autre, souvent inter applications dont il faut tenir compte. Ce sont souvent des plus. Je pense aux actions Envoyer vers ... ou l'intégration des actions de 7zip dans le menu contextuel.

Role numero 3, un installeur permet de configurer les droits des dossiers de l'application. C'est un concept récent. Aujourd'hui, c'est la dessus que j'ai eu à travailler principalement. J'ai encore tout à apprendre à ce sujet. Pourquoi les configurer à ce moment là me direz vous ?

En faite, votre application ne doit jamais avoir besoin du mode administrateur pour fonctionner. Dites vous que l'on vous rend service en faisant ça. En réduisant au minimum les possibilités sur votre application, elle ne risque pas d'endommager le système. Si vous avez laissé une faille de sécurité, personne ne pourra s'en servir au delà des bornes définis pour votre application. Il s'agit simplement de créer une frontière autour de votre système. C'est un peu comme si vous aviez un animal de compagnie, en cloturant votre maison, vous éviter que votre chien se mette en danger et vous évitez qu'il ennuie vos voisins. Cependant ça ne vous empeche pas de le sortir ^^.

L'installeur c'est le seul composant de votre application qui peut se lancer avec les droits administrateurs. Cela vous permettra justement de configurer le bac à sable dans lequel votre application pourra jouer. Quoiqu'il arrive je considère toujours qu'une application doit avoir aussi peu de droit que possible pour faire son travail. Dans mon cas, j'avais besoin de donner les droits en ecriture aux utilisateurs en général sur un sous dossier de ProgramData.

Role numero 4, un installeur permet d'informer l'utilisateur de l'avancé de l'installation et des opérations qui sont réalisées sur son PC. C'est essentiel. L'utilisateur vous laisse la main libre sur sa machine. La moindre des politesses c'est de l'informer de ce que vous trafiquez dessus.

Role numero 5, un installeur permet de vérifier qu'une machine contient tous les composants nécessaires au bon fonctionnement de votre programme. Il ne doit pas s'arreter à la vérification car ça, votre programme doit pouvoir le faire lui même. Dans l'idéal, il doit proposer d'installer les composants qui manquent. Libre à vous de les embarquer à l'intérieur de l'installeur lui même en temps que ressources ou de les télécharger sur Internet (c'est la solution de plus en plus précosinée).

Pour résumer, un installeur

  • cree l'environnement de travail
  • cree les raccourcis pour faciliter la vie de l'utilisateur
  • configure les droits sur les différents dossier de l'OS (si besoin)
  • informe l'utilisateur des actions qui sont effectués
  • vérifie que la machine contient tous les composants nécessaires au bon fonctionnement du programme

Quels avantages a utiliser un outil dedie ?

Comme on peut le constater, un installeur fait toujours plus ou moins la même chose. Ces bornes sont relativement bien définis. Autant dans ce cas, éviter de réinventer la roue. Pour
creer un installeur, vous n'avez pas besoin de l'expressivité d'un langage de programmation.

Un installeur est composé d'ecrans et suit un workflow parfaitement défini. Il arrive que l'on saute certains ecrans selon les choix de l'utilisateur mais la plupart du temps, ça a un début une fin parfaitement défini. On va en avant, parfois en arriere (c'est plus rare).

Autant dire que l'utilsateur sait à quoi s'attendre et il sera déçu si on lui offre une expérience différente. C'est pour cette raison qu'il est préférable de se diriger vers des outils existants.
On peut citer Intallshield, , NSIS, DreamShield ...

Il ne me reste plus qu'à terminer de tout mettre en place. Ce n'etait pas exhaustif mais j'espere que ça remet la notion d'installeur dans son contexte.
Si vous voyez d'autres rôles pour un installeur que j'aurai oublié, venez les partager.

Remplis sous: Non classé Aucun commentaire