Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Quelqu'un saurait-il comment, via une application windowform lors de son installation, installer les dll et driver odbc et sql anywhere dans la base de registre à la bonne place ?
Merci
Dernière modification par BRWA (24-04-2009 13:21:06)
Hors ligne
Question posée autrement :
J'ai une application publiée sur le web. Cette application dépend d'une base de données SQL Anywhere 10.0. Que dois-je faire pour que mon(mes) client(s) puissent disposer de cette application et de sa base de données si SQL Anywhere n'est pas installé sur leur machine ?
Hors ligne
Bonjour,
Je travaille en PB 11.2, mais je n'ai pas encore mis à jour la base de données (Contrat SYBASE OEM oblige). Je travaille encore en ASA 8.0. Pour une installation monoposte je déploie :
dbcon8.dll
dbctrs8.dll
dbctrs8.ini
dbeng8.exe
dblgen8.dll
dblgfr8.dll
dbodbc8.dll
dbserv8.dll
Pour la version 10, il suffit de prendre les fichiers équivalents avec le 8 remplacé par 10.
Tu trouveras ci-dessous un extrait du code du setup réalisé par NSIS concernant les inscriptions dans la base de registre (je pense qu'il est suffisamment explicite même si tu ne connais pas NSIS) :
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\dbeng8.exe" "" "$INSTDIR\Commun\dbeng8.exe" WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\dbeng8.exe" "PATH" "$INSTDIR\Commun" #Registry - ODBC Drivers WriteRegStr HKLM "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" "Adaptive Server Anywhere 8.0" "Installed" WriteRegStr HKLM "SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0" "Driver" "$INSTDIR\Commun\dbodbc8.dll" WriteRegStr HKLM "SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0" "Setup" "$INSTDIR\Commun\dbodbc8.dll"
Il te restera juste la configuration d'un lien ODBC pour la connection à la base de données
Hors ligne
N'y a-t-il pas moyen de l'ajouter en package dans "Sybase\PowerBuilder 11.0\DotNET\pbiu\BootStrapper\Packages" ?
L'aide fournie par sybase déclare qu'il y a moyen de la faire pour qu'ils apparaissent dans :
Hors ligne
Croyez-vous que ceci fonctionnerait :
INTEGER li_ret, li_i string ls_subkeylist[] boolean lb_found li_ret = RegistryKeys("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Anywhere 10", ls_subkeylist) IF li_ret = 1 AND UpperBound(ls_subkeylist) = 0 THEN li_ret = RUN("Registre\SQL Anywhere.reg") IF li_ret = 1 THEN li_ret = RUN("Registre\Comport.reg") // l'étiquette ODBC de la base de données qu'utilise l'application END IF ELSE li_ret = RUN("Registre\Comport.reg") END IF RETURN li_ret RegistrySet( "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers",& "SQL Aywhere 10", RegExpandString!, "Installed")
Hors ligne
Je laisse les spécialistes winform te répondre plus précisément. Je sais qu'il est théoriquement possible d'intégrer des composants externes à un programme winform lors du déploiement.
En important un fichier reg par une commande externe, il ne faut pas oublier que tu n'as aucun contrôle sur la réalité de l'inscription réelle des clés dans la base de registre. Je préfère utiliser les fonctions natives de Powerbuilder. Pour ma part, j'ai en fait développé une fenêtre permettant de configurer la connexion ODBC (Monoposte ou serveur).
La configuration SQL Anywhere est réalisé par le programme d'installation pour des raisons entre autre de compatibilité avec VISTA (UAC, exige une élévation des droits pour écrire dans la HKLM, en mode standard une application n'a pas le droit d'écrire dans la HKLM).
Sinon, il n'y a pas de raisons que ça ne fonctionne pas (Attention éventuellement avec Vista).
Hors ligne