PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Bonne méthode pour paramétrage de l'application et déploiement
Bonne méthode pour paramétrage de l'application et déploiement
Débuté par LC, 18 sep. 2018 19:49 - 10 réponses
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 18 septembre 2018 - 19:49
Bonjour à tous,
Assez débutant en Windev (déploiement), j'ai du mal à comprendre le mécanisme de paramétrage d'une application et le déploiement chez le client.
Je voudrais avoir un avis éclairé de ce qui se pratique avec Windev sans réinventer la roue ni construire une usine à gaz.
Car si j'ai migré certaines applications sur Windev, c'est que l'on m'a vanté de sa rapidité de développement avec le moins de code possible...
Donc voici mon problème :
j'ai donc une base HFSQL/C.S, lorsque je développe sur mon pc qui s'appelle PCDEDEV, j'ai donc un chemin dans ma connexion qui pointe sur cette base, je me suis aperçu que ça ne peut pas marcher lorsque je vais déployer tout ça dans le serveur de mon client. j'ai donc "enlever" le nom du serveur (image jointe) et je me suis fais un fichier INI dans le répertoire de mon serveur :
[Serveur]
Nom=PCDEDEV
Port=4900
chez mon client je change donc le nom du serveur.
et voici le code dans le projet :
//===========================================
// Paramètres de connexion
//===========================================
NomDuFichierParam est une chaîne
NomDuServeur, PortDuServeur sont des chaînes
ConnexionPS_OK est une Connexion

//Test si fichier paramétrages est ok
SI fFichierExiste(fRepExe()+"\ParamGestionPublissud.ini") ALORS
//Récupération nom du fichier paramètres
NomDuFichierParam = fRepExe()+"\ParamGestionPublissud.ini"

//Récupération nom du serveur (Nom du pc ou de l'adresse IP)
NomDuServeur = INILit("Serveur","Nom","?",NomDuFichierParam)
SI NomDuServeur = "?" ALORS
Info("Le nom du serveur est incorrect")
FinProgramme()
FIN

//Récupération numéro du port du serveur
PortDuServeur = INILit("Serveur","Port","?",NomDuFichierParam)
SI PortDuServeur = "?" ALORS
Info("Le N° du port du serveur est incorrect")
FinProgramme()
FIN

//Tentative de connexion
ConnexionPS_OK..Utilisateur = "admin"
ConnexionPS_OK..MotDePasse = ""
ConnexionPS_OK..Source = NomDuServeur + ":" + PortDuServeur
ConnexionPS_OK..BaseDeDonnées = "Publissud"
ConnexionPS_OK..Provider = hAccèsHFClientServeur
ConnexionPS_OK..Accès = hOLectureEcriture

SI HChangeConnexion("*", ConnexionPS_OK) = Faux ALORS
Erreur("Erreur ChangeConnexion HFSQL : " + HErreurInfo())
FIN
SI HOuvreConnexion(ConnexionPS_OK) = Faux ALORS
Erreur("Erreur OuvreConnexion HFSQL : " + HErreurInfo())
FIN
SINON
//Fichier de paramètres incorrect
Info("Le fichier de paramétrages de l'application est incorrect ou inexistant")
FinProgramme()
FIN


//Modifie structure fichiers
//HCréationSiInexistant("*")
HSurErreur("*",hErrBlocage+hErrDoublon+hErrIntégrité+hErrModification+hErrPerteConnexion,F_erreur)
HModifieStructure("*", hmsTâcheDeFond)

mais voila, la première fois, pas de pb, mais lorsque je rajoute des fichiers dans mon application, suite évolution, lorsque je redéploie l'install, le programme veut mettre à jour la base et bien entendu il ne trouve pas le serveur du client ....
je ne sais pas si mon explication est claire , et je ne sais pas si je procède correctement.. j'ai du mal à comprendre la
liaison entre l'analyse et la base de données en elle même ... comment dois faire pour que l'application une fois chez mon client "sait" ou aller faire la synchro ?


Posté le 19 septembre 2018 - 14:48
bonjour

dans la logique c'est dans l'ordre
HOuvreConnexion(ConnexionPS_OK)
HChangeConnexion("*",ConnexionPS_OK)

après dans la generation de l’exécution il y a le numéro de version de l’exécutable
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 19 septembre 2018 - 16:14
Merci pour ta réponse mais ça ne répond pas à la question, j'ai bien vu la version mais je voudrais savoir comment on paramètre la connexion
entre le fait que je sois sur mon pc de dev et chez le client (pas le même nom de serveur)
Posté le 19 septembre 2018 - 20:55
bonsoir

HOuvreConnexion(ConnexionPS_OK)
HChangeConnexion("*",ConnexionPS_OK)

si je fais comme cela l'ordre est important

on peux pas faire un HChangeConnexion apres HOuvreConnexion

tu a juste a faire une modif dans hfsql dans l'analyse sans mettre a jours ton serveur juste l'analyse et vérifier que ton serveur a fait la maj en lançant l'exe

sauf HChangeConnexion je passe a chaque fois le nom de la table au lieu *
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 19 septembre 2018 - 22:22
je n'arrive pas à me faire comprendre, comment la synchro peut se faire lorsque j'ainstalle la modif chez mon client ?
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 20 septembre 2018 - 07:22
Tu pourrais peut-être changer d’approche, moi, dans un cas de figure comme le tien, je rajoute une ligne dans mon fichier hosts contenant le nom du serveur du client et l’ip 127.0.0.1 (localhost quoi).

Ensuite dans ma connexion j’utilise toujours le nom du serveur du client même sur mon poste de dev.
Membre enregistré
28 messages
Popularité : +1 (1 vote)
Posté le 20 septembre 2018 - 08:13
N'oublie pas de faire un WDModFic sur tes base de production avec ton analyse actuel. Ça permettra de rajouter tes nouvelles rubriques aux fichiers existant. Sinon si tu as des données à importer, personnellement, je crée un programme temporaire qui va importer les données en BDD.

Si tu veux une connexion quand t'es en prod et une quand t'es en dev, tu devrait regarder la fonction EnModeTest(), pour savoir si t'es en dev, ensuite juste avant ta connexion et après le renseignement des variables de connexion, tu réécris tes variables avec tes identifiants de base de donnée.

Exemple rapide à modifier:
gcnxMaConnexion est une connexion

gcnxMaConnexion..BaseDeDonnée = "Prod"
gcnxMaConnexion..Utilisateur = "admin"
gcnxMaConnexion..password = "xxxx"
gcnxMaConnexion..serveur="x.x.x.x:xxxx"

SI EnModeTest() ALORS
gcnxMaConnexion..BaseDeDonnée = "DEV"
gcnxMaConnexion..Utilisateur = "admin"
gcnxMaConnexion..password = "xxxx"
gcnxMaConnexion..serveur="y.y.y.y:yyyy"
FIN

SI HChangeConnexion("*", gcnxMaConnexion) = Faux ALORS
Erreur("Erreur ChangeConnexion HFSQL : " + HErreurInfo())
FIN
SI HOuvreConnexion(gcnxMaConnexion) = Faux ALORS
Erreur("Erreur OuvreConnexion HFSQL : " + HErreurInfo())
FIN


--
(\ _ /)
(='.'=)
(")-(")
Message modifié, 20 septembre 2018 - 08:14
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 20 septembre 2018 - 08:16
Ma méthode est totalement transparente du point de vu code et elle permet de surcroit d'utiliser la connexion défini dans les analyses ;)
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 20 septembre 2018 - 18:29
Bonsoir Dergen, merci pour ta réponse, mais comme je l'ai indiqué, j'ai déjà rajouté le nom du serveur dans mon fichier INI !
je trouve que de mette le nom du serveur de mon client dans mon analyse en dev, n'est pas du tout adaptée, lorsque mon client via son prestataire changera de serveur, ça ne fonctionnera plus et le pire c'est que je ne serai même pas au courant ....
Et puis mettre le nom du serveur du client alors que j'ai plusieurs clients avec la même appli .. faudra m'expliquer la cohérence de ce choix..
Membre enregistré
628 messages
Popularité : +0 (16 votes)
Posté le 20 septembre 2018 - 18:31
Merci Geoffrey pour ta réponse, je n'avais pensé à : en mode test
Membre enregistré
329 messages
Popularité : +28 (32 votes)
Posté le 20 septembre 2018 - 22:12
LC a écrit :
Bonsoir Dergen, merci pour ta réponse, mais comme je l'ai indiqué, j'ai déjà rajouté le nom du serveur dans mon fichier INI !
je trouve que de mette le nom du serveur de mon client dans mon analyse en dev, n'est pas du tout adaptée, lorsque mon client via son prestataire changera de serveur, ça ne fonctionnera plus et le pire c'est que je ne serai même pas au courant ....
Et puis mettre le nom du serveur du client alors que j'ai plusieurs clients avec la même appli .. faudra m'expliquer la cohérence de ce choix..



La, tu rajoutes des contraintes à celle que tu as présenté dans ton premier post, alors du coup, ma proposition n’est plus judicieuse.

Tu as au le HChangeConnexion dans l’initialisation de ton projet qui peux le faire aussi en t’appuyant sur .INI, cela aussi marche pas mal :).