1. Installation et déploiement #
1.1 Prérequis #
| Élément | Détail |
|---|---|
| PowerBuilder | 10.2 → 2025 (32 bits ou 64 bits) |
| Windows | 10 / 11, Server 2016 et supérieur |
| Runtime WebView2 Evergreen | Préinstallé sur Windows 10/11 à jour. Sur Windows Server ou LTSC, l'installer une fois avec le bootstrapper MicrosoftEdgeWebview2Setup.exe (~2 Mo, silencieux : /silent /install) |
Il n'y a rien d'autre à installer : pas de .NET, pas d'ActiveX, pas de PBNI, aucun enregistrement COM, aucun droit administrateur pour la bibliothèque elle-même.
1.2 Fichiers à déployer #
Déploiement xcopy, à côté de votre exécutable :
mon_appli.exe
pbtoolboxai.dll <- exemplaire x86 ou x64, selon votre application
La DLL est autoportante : les bundles HTML/CSS/JS, les thèmes et les dictionnaires de langue sont embarqués comme ressources. Aucun fichier web sur disque, aucun dossier annexe à recopier.
Côté PowerBuilder, pbtoolboxai.pbl est intégrée à votre application comme n'importe quelle bibliothèque (en .pbl en développement, en .pbd ou compilée dans l'exécutable en production).
Un seul nom de DLL pour le 32 et le 64 bits #
La bibliothèque est livrée en deux exemplaires portant le même nom, dans deux dossiers séparés :
| Dossier livré | Fichier | À déployer avec |
|---|---|---|
x86\ | pbtoolboxai.dll | l'IDE PowerBuilder (toujours 32 bits) et les exécutables 32 bits |
x64\ | pbtoolboxai.dll | les exécutables 64 bits |
Conséquence pratique : vos déclarations external functions ne citent qu'un seul nom, pbtoolboxai.dll. Vous développez et déboguez dans l'IDE 32 bits, puis vous compilez un exécutable 64 bits sans changer une ligne de PowerScript — seul le fichier déployé change.
Sablier pendant une opération longue.
SetPointer(HourGlass!)ne couvre que les zones PowerBuilder : un composant est un WebView2, il tourne dans un autre processus et continue d'afficher son curseur normal — l'écran dit « cliquez-moi » alors que rien n'écoute.PBT_SetBusy(1)demande à tous les composants de poser le sablier, y compris ceux qui naissent pendant l'attente ;PBT_SetBusy(0)le lève. Encadrez-en vos traitements longs, comme vous le faites déjà avecSetPointer.
⚠️ Les deux exemplaires portant le même nom, ils ne doivent jamais cohabiter dans un même dossier.
ℹ️ Rien d'autre à changer pour le 64 bits. Les handles de fenêtre traversent l'API de la bibliothèque sur 32 bits — Windows garantit que les handles de fenêtre tiennent sur 32 bits significatifs, précisément pour ce passage. La déclaration
longportée paru_pbt_baseest donc exacte sur les deux cibles : vous ne touchez ni au nom de la bibliothèque, ni à une seule ligne de PowerScript. Aucunlongptrn'est requis, et le plancher reste PowerBuilder 10.2.
1.3 Intégration dans l'IDE PowerBuilder #
- Copiez
pbtoolboxai.pbldans le dossier de votre application. - Library list de la cible → ajoutez
pbtoolboxai.pbl. - Copiez
pbtoolboxai.dll— l'exemplaire x86, l'IDE PowerBuilder étant 32 bits — à côté depbXXX.exeou dans le dossier de travail de la cible, afin que l'IDE la trouve en exécution depuis l'IDE. - Les déclarations external functions sont déjà portées par
u_pbt_base: rien à redéclarer pour utiliser un composant.
Déclarations globales (optionnel) #
Quelques fonctions sont globales au processus (thème par défaut, langue, sens de lecture, licence). Elles ne dépendent d'aucun composant : déclarez-les dans l'objet application (Local External Functions de l'objet application), puis appelez-les dans l'event open.
// Declarations - objet application, onglet "Local External Functions"
Function long PBT_SetLicense (string as_client, string as_key) Library "pbtoolboxai.dll"
Function long PBT_SetDefaultTheme (string as_name) Library "pbtoolboxai.dll"
Function long PBT_SetDefaultThemeAccent (long al_accent) Library "pbtoolboxai.dll"
Function long PBT_SetLanguage (string as_lang) Library "pbtoolboxai.dll"
Function long PBT_SetFlowDirection (string as_dir) Library "pbtoolboxai.dll"
Function long PBT_SetBusy (long al_on) Library "pbtoolboxai.dll"
Function long PBT_Warmup () Library "pbtoolboxai.dll"
// Event open de l'objet application
PBT_SetLicense(gs_titulaire, gs_cle_licence) // debride la bibliotheque
PBT_SetDefaultTheme("fluent-dark") // theme applique AVANT le premier rendu
PBT_SetLanguage("fr") // langue de l'interface des composants
PBT_Warmup() // prechauffe le moteur WebView2
Open(w_principale)
⚠️ Le nom de la bibliothèque est le même en 32 et en 64 bits : ces déclarations restent identiques quelle que soit la cible compilée.
1.4 Vérifier le runtime au démarrage (recommandé) #
Deux moyens complémentaires :
// 1. Sur le composant : l'event ue_runtime_missing est leve si WebView2 est absent
event ue_runtime_missing // sur votre composant
MessageBox("PBToolboxAI", "Le composant Microsoft WebView2 est requis.")
// 2. A froid, sans composant : PBT_CheckRuntime renvoie la version installee
string ls_version
long ll_rc
ls_version = Space(64)
ll_rc = PBT_CheckRuntime(ls_version, 64)
if ll_rc <= 0 then
MessageBox("PBToolboxAI", "Runtime WebView2 absent : installez-le avant de continuer.")
end if
1.5 Préchauffage (performance de démarrage) #
Le premier composant créé paie le démarrage du processus Edge (quelques centaines de millisecondes). PBT_Warmup() déclenche ce démarrage pendant que votre application charge le reste :
// Event open de l'objet application, AVANT l'ouverture de la premiere fenetre
PBT_Warmup()
Sans préchauffage tout fonctionne : la première fenêtre s'affiche simplement un peu plus lentement.
1.6 Dossier de données WebView2 #
Chaque application obtient son propre dossier de cache sous %LOCALAPPDATA%\PBToolboxAI\WebView2\<nom_exe> — jamais à côté de l'exécutable (souvent non inscriptible en Program Files). Il est créé automatiquement ; aucune action requise, aucun droit particulier.
1.7 Désinstallation #
Supprimez la DLL et la PBL de votre livraison. Le cache peut être effacé sous %LOCALAPPDATA%\PBToolboxAI. Le runtime WebView2, partagé avec Windows et d'autres applications, se laisse en place.
1.8 Checklist de mise en service #
- [ ]
pbtoolboxai.dll(x86 / x64) à côté de l'exécutable (et depbXXX.exepour l'IDE) - [ ]
pbtoolboxai.pbldans la library list - [ ]
PBT_SetLicenseappelé dans l'eventopende l'application (Licence) - [ ]
PBT_SetDefaultThemeappelé avant l'ouverture de la première fenêtre (Thèmes) - [ ]
PBT_Warmupappelé une fois au démarrage - [ ] Runtime WebView2 vérifié sur le poste cible