Un exécutable 32 ou 64 bits exécuté sous Windows doit effectuer dans un tout premier temps le chargement de modules du framework de WINDEV. En effet le framework intègre toutes les fonctionnalités utilisées par l'application.

Il peut être utile en phase de mise au point de vérifier la localisation du framework, ou de comprendre pourquoi son téléchargement est lancé. Ce thème a été détaillé sur les forums développeurs en 2006, mais reste d'actualité le "principe" de lancement d'un exécutable sous Windows restant toujours le même. Voici donc une reprise du forum sur ce sujet :

[...]
L'exécutable lors de sa création intègre en fonction de vos choix dans l'assistant les informations suivantes :
  • la version interne de WINDEV utilisée pour sa création,
  • si le Framework est inclus dans l'exécutable ou non (défaut),
  • si le Framework garde son nom d'origine (défaut), ou s'il est renommé.
  • si le Framework utilisé est commun ou non (défaut)
Ces informations sont directement utilisées par le processus de lancement qui se déroule de la façon suivante :
L'exécutable commence par vérifier s'il intègre le Framework, deux possibilités :
  1. l'exécutable inclus le Framework, il l'extrait sur le disque (même répertoire que l'exécutable) avec son nom d'origine, ou en le renommant si cela a été précisé lors de sa création. Le lancement du Framework est alors demandé par l'exécutable à Windows (1). Si le lancement est réussi, l'application démarre. Si le chargement du Framework échoue, il y a téléchargement du Framework (2).
  2. l'exécutable n'inclus pas le Framework, il tente un chargement du Framework directement dans son répertoire. S'il est présent, l'application démarre. En cas d'échec, on distingue à nouveau deux cas possibles :

    2-1. L'exécutable peut utiliser un Framework commun : dans ce cas il est chargé dans le dossier \Program Files\Fichiers communs\PC SOFT\10.0\. Si ce chargement est réussi, l'application démarre. En cas d'échec, il y a téléchargement d'un Framework (3).

    2-2. L'exécutable ne peut pas utiliser un Framework commun : il télécharge (4) un Framework qui sera ensuite utilisé pour lancer l'application.

J'ai synthétisé au maximum le processus, vous pourrez ainsi maîtriser tous les cas pouvant aboutir au téléchargement d'un Framework avant le lancement effectif de l'application. N'hésitez pas à nous interroger sur ce sujet, via le "? ... Requête au Support Technique Gratuit". Mais précisez bien les options que vous retenez pour la création de l'exécutable, vous l'avez compris elles sont capitales !


(1) : le lancement est fait par "LoadLibrary", le Framework est donc recherché dans le répertoire de l'exécutable, de Windows, et les chemins contenus dans la variables d'environnement PATH.
(2) : la version du Framework téléchargé est exactement celle mémorisée dans l'exécutable. Son installation sera faite dans le même répertoire que l'exécutable, avec son nom d'origine ou en le renommant si cela a été demandé à la création de l'exécutable.
(3) : ce Framework est placé dans le répertoire commun : \Program Files\Fichiers communs\PC SOFT\10.0\ Il sera dans la version interne de WINDEV la plus récente.
(4) : ce Framework est placé dans le répertoire de l'exécutable, il s'agit du Framework de version interne identique à celle de WINDEV sur le poste qui a créé l'exécutable.
[...]

A noter que le "Moniteur des ressources" depuis Windows 7 permet de voir immédiatement où sont les modules chargés par un exécutable donné :
  • lancer le "Moniteur des ressources" via le menu "Démarrer", ou le volet "Performances" du gestionnaire de tâches,
  • sélectionner le volet "Processeur",
  • sélectionner l'exécutable dans les processus listés,
  • dérouler la zone "Modules associés" : elle contient toutes les DLL chargées par l'exécutable.
Illustration pour un exécutable nommé EXE32.EXE :


Pour aller plus loin il est possible d'utiliser l'utilitaire ProcMon. Ce dernier permet de suivre toutes les entrées/sorties d'un processus donné, et donc de voir tous les accès aux modules utilisés. Il a été décrit dans un précédent billet.

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée