DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Développer une application ou un site / Gestion du 64 bits
  • Présentation
  • Comment le faire ?
  • Pré-requis
  • Passer une application WINDEV en 64 bits
  • Mode de gestion des erreurs de compilation
  • Erreurs de compilation spécifiques au 64 bits
  • Limites et adaptations
  • Limites diverses
  • Adaptations
  • Gestion de la base de données
  • Installation de l'application
  • Installation combinée 32 et 64 bits
  • Installation 64 bits uniquement
  • Passer d'une installation 32 bits à une installation 64 bits
  • Passer d'une installation combinée à une installation 64 bits
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Présentation
Les ordinateurs récents sont désormais équipés par défaut de systèmes d'exploitation "64 bits", que ce soient des machines de type serveur ou des machines de bureau.
La principale différence entre un système "32 bits" et un système "64 bits" est la suivante : en "64 bits", les applications et le système ne sont plus limités au niveau de l'allocation mémoire.
En effet, en "32 bits", le système d'exploitation est limité à 4 Go de mémoire, et en "64 bits", il n'y a quasiment plus de limite (la limite théorique est à 18 milliards de Gigas).
Fonctionnement des applications 32 bits :
  • Les applications WINDEV 32 bits fonctionnent sur un système d'exploitation 64 bits sans aucune modification : exécutable, installation, ...
  • Lorsque des applications 32 bits s'exécutent sur un système 64 bits, elles sont indiquées dans le gestionnaire de tâches comme telles. Ces applications ne sont ni perturbées ni exécutées dans un mode de compatibilité : elles sont simplement soumises aux contraintes mémoires des applications 32 bits. Cette limitation mémoire n'est pas une contrainte pour la plupart des applications classiques.
Remarque : A partir de la version 28, les nouveaux projets créés avec WINDEV sont automatiquement des projets 64 bits.
Comment le faire ?

Pré-requis

  • Connaître la répartition des systèmes d'exploitation des postes clients entre le 32 bits et le 64 bits.
    Attention : les applications 64 bits ne peuvent pas fonctionner sous un système 32 bits.
  • Vérifier les dépendances de l'application avec le 32 bits. L'application utilise-t-elle un des éléments ci-dessous ? Est-il bien disponible en 64 bits ? :
    • un ActiveX,
    • une base externe : il faut s'assurer que le connecteur natif est disponible en 64 bits.
    • la couche client permettant d'accéder à la base externe doit être en 64 bits sur le poste client,
    • une API Windows ou une dll,
    • un assemblage .NET,
    • des applications externes (OLE Automation). Si l'application utilise Word, Excel, LibreOffice, etc. : il faut s'assurer que les versions 64 bits de ces applications externes sont bien installées sur les postes clients.

Passer une application WINDEV en 64 bits

Pour passer simplement une application WINDEV 32 bits en 64 bits :
  1. Ouvrez le projet WINDEV 32 bits sous l'éditeur.
  2. Créez une nouvelle configuration de projet : sous le volet "Projet", dans le groupe "Configuration de projet", déroulez "Nouvelle configuration" et sélectionnez "Exécutable Windows" puis "64 bits". L'assistant de création de configuration de projet se lance.
  3. Dans l'assistant :
    • Indiquez le nom de la configuration de projet. Choisissez un nom explicite car ce nom sera utilisé pour créer le répertoire de génération des fichiers concernés par la configuration de projet.
    • Sélectionnez les éléments (fenêtres, requêtes, ...) de cette nouvelle configuration. Dans un cas classique, tous les éléments de l'application 32 bits doivent être sélectionnés.
      Remarque : Les éléments du projet seront partagés entre les deux configurations.
    • Terminez l'assistant.
  4. La configuration de projet est automatiquement créée.
    Pour plus de détails sur la création et la gestion des configurations de projet, consultez Configurations de projet.
Si votre poste de développement est en 64 bits, il est possible de tester immédiatement l'application en mode 64 bits grâce à l'option "GO" 64 bits.
Remarques :
  • Créer une application uniquement 64 bits : Bien entendu, il est possible de définir qu'une application est une application "64 bits" dès la création du projet. Cependant cette solution est plus sensible car une application "64 bits" ne fonctionne pas sur un système "32 bits" mais unique­ment sur un système "64 bits".
  • Si vous avez créé un projet pour une application 64 bits uniquement, il est également possible de créer une configuration de projet spécifique pour le mode 32 bits.

Mode de gestion des erreurs de compilation

  • Pour les applications et services (Windows ou Linux) en 32 bits, les erreurs de compilation 64 bits sont désactivées.
  • Pour les applications et services (Windows ou Linux) en 64 bits, les erreurs de compilation 64 bits sont toujours activées.
  • Pour les composants, bibliothèques et Webservices, par défaut, les erreurs 64 bits sont toujours activées.

Erreurs de compilation spécifiques au 64 bits

Si l'application "32 bits" utilisaient des API Windows ou des dll externes, le passage en mode "64 bits" peut générer des erreurs de compilation. Ces erreurs de compilation sont bien entendu spécifiques au mode "64 bits".
L'erreur la plus courante est l'utilisation d'une variable de type "entier" pour stocker une adresse mémoire. En effet, les adresses mémoires en 64 bits sont stockées sur 8 octets alors qu'en 32 bits, elles sont stockées sur 4 octets.
Dans ce cas, si un entier "classique" est utilisé, l'application risque d'accéder à une adresse mémoire tronquée donc erronée.
Pour éviter ce problème, il suffit d'utiliser le type Entier Système du WLangage : ce type utilise un entier sur 8 octets en 64 bits et un entier sur 4 en 32 bits !
Conseils :
  • Pensez à vérifier que les API utilisées existent bien en version "64 bits". Pensez également à vérifier que la dll n'a pas un nom différent dans sa version "64 bits", et surtout que son fonctionnement est identique.
    En cas de différences, il est possible d'utiliser la fonction WLangage EnMode64bits pour appeler l'API correspondant au système en cours.
  • En 64 bits, si une valeur trop grande est affectée dans une variable de type Entier sur 1, 2, 4 ou 8 octets, la valeur de la variable ne sera pas la même qu'en 32 bits.
Limites et adaptations

Limites diverses

  • La fonction Hasp n'est pas disponible en 64 bits.
  • Fonctions Netxxx : Seule la partie cliente est disponible en 64 bits, et est compatible avec un serveur 32 bits. La partie serveur (fonctions NetDémarreServeur et NetFinServeur) n'est pas disponible.
  • Langage externe 64 bits : seuls les langages C et C++ sont disponibles.

Adaptations

  • L'accès à la base de registre : sur un système 64 bits, les applications 32 bits écrivent dans la base de registre à partir de la branche suivante "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node".
    Remarque : La fonction RegistreLit a un mode d'accès automatique registreModeAuto qui lit la bonne clé de registre en fonction du type de configuration et du système sur lequel l'application est exécutée.
  • API Windows ou dll : dans certains cas, il sera nécessaire d'utiliser le type Entier Système du WLangage. Ce type utilise un entier sur 8 octets en 64 bits et un entier sur 4 en 32 bits.
  • Accès aux fichiers système : sur un système 64 bits, les applications 32 bits utilisent des répertoires système différents. Par exemple, un accès au répertoire "\Windows\system32\" se fera bien dans ce dossier à partir d'un exécutable 64 bits. Par contre, depuis un exécutable 32 bits, l'accès se fera dans le dossier "\Windows\SysWOW64".
  • Pour les composants externes utilisés dans le projet, il est nécessaire d'activer la compatibilité 64 bits dans les sources du composant. Pour un composant créé avec une version récente de WINDEV, ce mode est activé par défaut.
  • Pour des traitements spécifiques à une configuration soit 32 bits, soit 64 bits, il suffit d'utiliser la fonction WLangage EnMode64Bits.

Gestion de la base de données

L'accès à la base de données, que celle-ci soit HFSQL Classic ou HFSQL Client/Serveur, ne change pas même en passant l'application de 32 bits à 64 bits.
Note : Le serveur HFSQL est installé par défaut en 64 bits.
Concernant les bases de données externes, deux points importants :
  • les connecteurs natifs sont proposés en 64 bits, à l'exception des connecteurs natifs Sybase et Progress.
  • il faut également penser à installer sur les postes utilisateurs la couche client de la base de données externe en version 64 bits (à récupérer chez l'éditeur de la base de données).
Installation de l'application

Installation combinée 32 et 64 bits

Si le rapport de télémétrie a révélé que certains utilisateurs de l'application sont encore sous un système d'exploitation 32 bits, il est possible d'effectuer une installation combinée 32 bits et 64 bits.
Pour plus de détails, consultez Installation combinée.

Installation 64 bits uniquement

Lorsque tous les utilisateurs de l'application sont sur un système d'exploitation 64 bits, l'application peut alors être proposée uniquement en 64 bits.
Dans ce cas, la configuration 32 bits devient inutile et peut être supprimée (via un clic droit sur la configuration présente dans le volet "Explorateur de projet", option "Supprimer").
La procédure d'installation est standard. Pour plus de détails, consultez Procédure d'installation d'une application.

Passer d'une installation 32 bits à une installation 64 bits

Lorsque l'application est déjà installée sur les postes utilisateurs en 32 bits et qu'elle doit passer à la version 64 bits, il suffit de déployer l'installation 64 bits dans le même répertoire que la version 32 bits.
La mise à jour avec Live Update proposera automatiquement la mise à jour sur les postes des utilisateurs.
L'application passera alors automatiquement en 64 bits sur les postes clients.
Remarque : Lors de la génération de l'exécutable 64 bits, il est important d'appliquer un numéro de version supérieur à celui de la version en cours en 32 bits.

Passer d'une installation combinée à une installation 64 bits

Il suffit, de la même manière, de créer une procédure d'installation uniquement 64 bits et de la déployer sur le même répertoire réseau que l'installation combinée.
Rappel : Il est important de mettre un numéro de version de l'exécutable 64 bits supérieur à celui de l'exécutable 32 bits et de rendre la mise à jour obligatoire en forçant la version minimale autorisée à fonctionner.
Au lancement de l'application sur les postes clients, la mise à jour obligatoire sera proposée et l'application passera obligatoirement en 64 bits sur tous les postes clients.
Version minimum requise
  • Version 11
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 18/09/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale