Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Avec la version PB 2019 R3 il y a eu un découplage du runtime et de l'IDE.
Il me manque quelques notions pour interpréter la doc.
En effet, dans la version PB 2019 R3 la dll PBORC.dll n'est pas accessible directement.
D'après la doc il convient pour charger le fichier DLL d'exécution PBORC190.dll (qui devient PBORC.dll en R3) à partir duquel PowerBuilder IDE est installé, vous écrivez le code différemment entre 2019 R3 et 2019 R2.
En 2019 R3.
//First, define the AddEnvironmentPath method BOOL AddEnvironmentPath(LPCTSTR lpAddPath) { TCHAR szSysPath[1024 * 8] = { 0 }; TCHAR szNewPath[1024 * 8] = { 0 }; if(0 == GetEnvironmentVariable(_T("path"), szSysPath, 1024 * 8)) return FALSE; _tcscpy_s(szNewPath, lpAddPath); _tcscat_s(szNewPath, _T(";")); _tcscat_s(szNewPath, szSysPath); if(0 == SetEnvironmentVariable(_T("path"), szNewPath)) return FALSE; return TRUE; } //Add the path of runtime file before loading the runtime DLL //The directory needs to be updated when PB is upgraded AddEnvironmentPath(_T("C:\\Program Files (x86)\\Appeon\\Common\\PowerBuilder\\Runtime 19.2.0.2566")); AddEnvironmentPath(_T("C:\\Program Files (x86)\\Appeon\\PowerBuilder 19.0\\IDE\\")); (hORCALibrary = AfxLoadLibrary("PBORC.dll")
Sauf erreur, ce code est écrit en C.
Je n'y connais pas grand chose en C.
Comment exécuter ce code ?
Y a t'il besoin de le compiler et donc d'en faire un .exe ou il y a la possibilité de le faire interpréter directement ?
Dernière modification par Dadone (07-04-2021 14:39:26)
Hors ligne
Bonjour,
Je n'ai fait aucun changement au niveau d'orca en passant en Powerbuilder 2019R3.
Il s'agit simplement d'invoquer des fichiers de scripts écrit avec des instructions ORCA avec l’exécutable orcascr190.exe, par exemple (reconstruction suite à extraction d'un dépôt git) :
start session scc set connect property localprojpath "D:\Travail\Program\BUILD" scc set connect property logfile "buildapplication_gestion_2021.282.80.0.log" scc set connect property logappend false scc set connect property deletetempfiles "false" scc connect offline scc set target "gestion_cours.pbt" "refresh_all importonly" file copy "COMMUN\pbdom190.pbd" "COMMUN\com15606.pbl" Clobber Always scc exclude liblist "COMMUN\com15606.pbl" scc refresh target incremental scc refresh target "3pass" scc close end session
Et de l'éxécuter :
orcascr190.exe buildapplication_gestion_2021.282.80.0.orca > buildapplication_gestion_2021.282.80.0_ouptut.txt
Il est effectivement possible d'écrire des programmes en C à l'aide du SDK (C:\Program Files (x86)\Appeon\PowerBuilder 19.0\SDK\ORCA) pour étendre les fonctionnalités.
Mais, en fait je n'ai pas compris ce que tu voulais exactement faire ?
Hors ligne
Merci Buck pour ta réponse.
Je pense que cela fonctionne sans changement chez toi car tu dois toujours utiliser l'ancienne dll PBORCxxx.dll et qui doit être compatible avec l'exe Pb 2019R3.
Mais la doc est clair cette dll a changé de nom et se nomme désormais PBORC.dll.
Car quant j'exécute le script comme tu le fais, j'ai bien une erreur "Failed to load library PBORC.dll" une erreur qui est relevée dans la doc et cette doc dit qu'il faut exécuter le fichier C que mentionne la doc.
Bon, je vais me renseigner comment exécuter ce fichier C.
Dans les faits, j'ai exactement la même problématique que toi.
1. Extraire les sources de GIT
2. Créer un exe à partir de cette extraction.
Je vais m'inspirer de ton exemple pour faire l'extraction de GIT.
Si je comprends, les instructions précédées de "SCC" concerne le source control ? En l'occurrence celui de GIT ?
Hors ligne
Bonjour,
Si c'est pour l'executer à partir d'une ligne de commande et que tu passes par un fichier de commande (.bat, .cmd) tu peux simplement ajouter au début du fichier de commande:
PATH %PATH%;C:\Program Files (x86)\Appeon\Common\PowerBuilder\Runtime 19.2.0.2566
Hors ligne
Merci Xlat, mon fichier s'exécute.
Bon j'ai encore des erreurs mais je vais m'appuyer sur des exemples que j'ai trouvé sur le forum pour les résoudre.
Ce qui me gène dans cette histoire c'est le path en dure, mon runtime étant différent du tiens (2670) j'ai bien peur qu'à chaque nouvelle version on soit obligé de revenir sur le path.
Dernière modification par Dadone (08-04-2021 09:22:34)
Hors ligne
Bonjour,
Avant la migration sous GIT (précédement CVS), j'utilisais ORCA pour extraire le code du dépôt (scc connect ..). Mais cela n'est plus possible sous GIT :
The OrcaScript command for getting the latest objects from the source control server is not supported by the SVN/Git solution. You can consider using the SVN/Git client tool (such as TortoiseSVN, TortoiseGit etc.) to get the latest objects via commands. For more information, see Usage notes for OrcaScript commands with SVN/Git.
Du coup, pour obtenir le source à partir du dépôt distant, je lance un batch avant l'appel du script ORCA :
SET BUILD=D:\Travail\Program\BUILD git clone http://user:password@gitserver:8443/root/afinity.git %BUILD%
Je n'ai pas du tout c'est erreur de dll et le besoin de préciser le path. J'utilise bien la version R3 incompatible avec les anciennes dll.
Je pense que tu n'as pas mis à jour l'objet application de ton projet pour lui préciser le runtime à utiliser (dans le dépôt git). En Powerbuilder R3, il faut préciser le runtime cible pour ton application, il se déclare une nouvelle variable globale du type :
string appruntimeversion = "19.2.0.2670"
L'exemple ORCA que j'ai mis ne permet que de reconstruire le projet (création des pbls et import des différents objets dans les pbl).
Hors ligne
Ok, merci Buck.
Si je comprends bien :
Etape 1 : Clone du dépôt Git via un fichier de commande, par exemple :
cd "C:\10 Git Clone" git.exe clone https://codev-tuleap.xxxx.git
Etape 2 : Reconstruction du projet , création des PBL et import des différents objets dans les PBL, en reprenant ton exemple :
start session scc set connect property localprojpath "C:\10 Git Clone" scc set connect property logfile "buildapplication_xxxx.log" scc set connect property logappend false scc set connect property deletetempfiles "false" scc connect offline scc set target "sepia.pbt" refresh_all importonly" scc refresh target incremental scc refresh target "3pass" scc close end session
Etape 3 : construction de l'exe
Je vois deux moyens pour cela.
A) En utilisant un fichier de commande et en invoquant directement le compilateur :
pbc.exe /d "C:\10 Git Clone\sepia.pbt" /o "c:\tma pb\exe\sepia.exe" /r "C:\10 Git Clone\sepia.pbr" /w n /f /m n /x 32 /bg y /p "PowerBuilder Enterprise Series" /cp "Sybase, Inc." /de "Sybase, Inc. Product File" /v "1.0.0.1" /vn "1.0.0.1" /fv "1.0.0.1" /fvn "1.0.0.1" /ge 0 /pd yyyyyyyyyyyyyy /rt 19.2.0.2670
B) En utilisant Orca script :
; Possibilités de mettre des informations concernant la version set exeinfo property fileversion "xxx" set exeinfo property fileversionnum "2.2.0.0" set exeinfo property productversion "2.2" set exeinfo property productversionnum "2.2.0.0" Build application full Build executable "c:\tma pb\exe\sepia.exe" "C:\10 Git Clone\sepia.ico" "C:\10 Git Clone\sepia.pbr" "yyyyyyyyyyyyyy" scc close end session
Je teste cela.
Dernière modification par Dadone (12-04-2021 15:54:34)
Hors ligne
Bonjour,
C'est tout à fait cela. Pour des raisons historiques, il y a certain projet que je compile avec ORCA et d'autres en invoquant Powerbuilder en ligne de commande.
Je n'avais jamais réussi à l'époque (Powerbuilder 9) à compiler les projets les plus complexes entièrement avec ORCA (GPF). Du coup, j'ai migré sans avoir le temps de retester si les dernières versions d'ORCA avaient résolu le problème.
Je n'utilise pas encore pbc pour compiler. J'ai prévu de le faire pour faire des "nightly build" sur un serveur, mais pas encore eu le temps de migrer.
Sinon un exemple de compilation d'un projet complet en ORCA :
start session scc set connect property localprojpath "D:\Travail\Program\BUILD" scc set connect property logfile "buildapplication_formation_2021.282.80.0.log" scc set connect property logappend false scc set connect property deletetempfiles "false" scc connect offline scc set target "formation_cours.pbt" "refresh_all importonly" scc refresh target incremental scc refresh target "3pass" scc refresh target full BUILD library ".\Paye\a_form\for9179.pbl" "" PBD BUILD library ".\Paye\a_form\for26969.pbl" "" PBD BUILD library ".\Paye\a_form\for13020.pbl" "" PBD BUILD library ".\Paye\a_form\for30801.pbl" "" PBD BUILD library ".\Paye\a_form\for21880.pbl" "" PBD BUILD library ".\Paye\a_form\for27327.pbl" "" PBD BUILD library ".\Paye\a_form\for6177.pbl" "" PBD BUILD library ".\Paye\a_rh\rhu21324.pbl" "" PBD BUILD library ".\Paye\a_rh\rhu6630.pbl" "" PBD BUILD library ".\Paye\a_rh\rhu999.pbl" "" PBD BUILD library ".\Paye\a_rh\rhu16173.pbl" "" PBD BUILD library ".\Paye\a_rh\rhu18798.pbl" "" PBD BUILD library ".\Paye\a_rh\rhu16031.pbl" "" PBD BUILD library ".\Paye\a_rh\rhu2723.pbl" "" PBD BUILD library ".\Paye\moteur\mot11650.pbl" "" PBD BUILD library ".\Paye\moteur\mot21266.pbl" "" PBD BUILD library ".\Paye\moteur\mot3853.pbl" "" PBD BUILD library ".\Paye\moteur\mot3975.pbl" "" PBD BUILD library ".\Paye\moteur\mot388.pbl" "" PBD BUILD library ".\Paye\moteur\mot24382.pbl" "" PBD BUILD library ".\Paye\moteur\mot16689.pbl" "" PBD BUILD library ".\Paye\moteur\mot10085.pbl" "" PBD BUILD library ".\Paye\moteur\mot6223.pbl" "" PBD BUILD library ".\Paye\moteur\mot17392.pbl" "" PBD BUILD library ".\Paye\a_paye\pay13183.pbl" "" PBD set exeinfo property companyname "Afinity SARL" set exeinfo property productname "Afinity Paye Formation 2021" set exeinfo property copyright "Copyright © Afinity SARL 1993-2021" set exeinfo property description "Paye Formation 2021" set exeinfo property fileversion "2021.282.80.0" set exeinfo property fileversionnum "2021,282,80,0" set exeinfo property productversion "2021.282.80.0" set exeinfo property productversionnum "2021,282,80,0" build executable ".\paye\a_form\afinity_formation.exe" ".\paye\bmp_in\global.ico" ".\paye\projet\bmp.pbr" "yyyyyyyyyyyyyyyyyyyyyyyyy" NEWVSTYLECONTROLS scc close end session
Hors ligne
Merci Buck, super ton exemple.
Ces dernières années, j'ai fais plus de Windev/Webdev que de PowerBuilder mais ce produit reste, et de loin, le plus puisant jamais conçu.
Dans la société où je travaille actuellement quand je vois comment galère la TMA JEE ou ASP .Net je me dis que j'ai bien fais de rester sur PB.
Dernière modification par Dadone (13-04-2021 08:12:22)
Hors ligne
Hors ligne