ClapMAJ - Entrées et sorties

De Wiki de Lapalys
Révision datée du 22 février 2015 à 20:31 par HFDASysop (discussion | contributions) (→‎Liens utiles)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Détail des méthodes

Dans les exemples ci-dessous, cMaj est le nom de l'instance de la classe clapMAJ du composant de mise-à-jour.


Méthode 'Constructeur'

Résumé
Ouvre une instance de la classe de mise-A-jour


Syntaxe
clapMAJ ([<sFichierINI> est chaîne [, <sPasseIni> est chaîne [, <sRépertoireMAJ> est chaîne [, <sNomThread> est chaîne [, <sNomSocket> est chaîne]]]]])


Paramètres
sFichierINI (chaîne) : chemin complet du fichier INI qui contient les informations sur le répertoire, sur le serveur FTP et/ou le serveur HTTP.
sPasseIni (chaîne) : Mot de passe permettant de décrypter les informations sensibles mises dans le fichier INI (voir ci-dessus pour plus de détail).
sRépertoireMAJ (chaîne - valeur par Défaut=fRépertoireTemp()) : Chemin du répertoire temporaire dans lequel les mises-à-jour sont téléchargées avant leur copie dans le répertoire de destination.
sNomThread (chaîne - valeur par Défaut="thMAJ") : Nom du thread qui sera utilisé pour télécharger les fichiers en tâche de fond. Il sera suffixé par un indice interne au composant.
sNomSocket (chaîne - valeur par Défaut="socketMAJ") : Nom du socket qui sera utilisé pour télécharger les fichiers via HTTP. Il sera suffixé par un indice interne au composant.


Valeur de retour
Aucune
Exemple
:cMAJ est un clapMAJ(fRepExe()+["\"]+"MonLogiciel.INI","",*,"thMonThread")


Méthode 'nVérifieSiExiste'

Résumé
Vérifie qu'un fichier est disponible dans les chemins d'accès où peuvent se trouver les mises-à-jour. Le fichier plus récent peut également, via un paramètre, être téléchargé par cette méthode.
Les information de "connexion" au différents chemins sont soit passé directement en paramètre de cette méthode, soit doivent être dans un fichier ini (dont le chemin est passé en paramètre de la classe) et peuvent être cryptés avec les paramètres crypteRapide et encodePCS, le mot de passe étant aussi passé en paramètre de la classe.
Si les informations de "connexion" n'existent pas (ou est en erreur) pour un chemin, la méthode teste le chemin suivant selon la priorité suivante : répertoire (local ou réseau), FTP et HTTP.
Dans tous les cas, les caractéristiques du fichier trouvé dans un chemin sont comparés au fichier local. Si clapMAJ récupère le # de version du fichier distant (p.ex. sur un lecteur réseau et si le fichier est un .EXE, .DLL, .WDL, .WDK), il faut qu'il soit différent de la version courante du fichier local. Dans le cas où la version est identique, la comparaison se fait sur la taille du fichier. Quand le # de version n'est pas disponible, clapMAJ vérifie alors que la date/heure du fichier distant est plus récent que ceux du fichier local.
Une jauge peut aussi être affichée en bas de la fenêtre appelante (si la barre de message de cette fenêtre a été activée dans cette dernière).
Avant de lancer cette méthode, l'état d'un fichier est ::_clapMAJÉtatPasEncoreVérifiée (voir méthode :bÉtatDeLaMAJ() ). De plus, en mode "exécutable", le composant doit être initialisé sinon cette méthode renverra toujours ::_clapMAJÉtatÉchouée.


Syntaxe
[ <Résultat> = ] nVérifieSiExiste (<sCheminFichier> est chaîne, <xSource>, <bTélécharge> est booléen [, <bAfficheJauge> est booléen [, <sPréfixeJauge> est une chaîne [, <sNomDuThread> est une chaîne ]]])


Paramètres
sCheminFichier (chaîne) : chemin du fichier à vérifier. Attention à la casse si l'on utilise ensuite bÉtatDeLaMAJ.
xSource (chaîne ou entier) : référence du chemin distant à tester :
passer la référence du chemin (chaîne) au complet : soit le nom complet du répertoire (local ou réseau), soit l'adresse FTP (FTP://User:Pass@domaine.com/répertoire/), soit l'adresse HTTP (HTTP://UserHTTP:PassHTTP@AdresseHTTP:PortHTTP). Attention, pour passer la référence d'un proxy HTTP ici, il faut que cette chaîne soit décrite comme : "HTTP://UserHTTP:PassHTTP@AdresseHTTP:PortHTTP"+RC+"UserProxy:PassProxy@AdresseProxy:PortProxy". Les "User", "Pass" et "Port" ne sont pas obligatoire. S'il n'y a pas de "User" et de "Pass", mettre directement l'adresse (sans le @ devant). Si le "Port" est absent, c'est le port par défaut qui sera utilisé (80 pour HTTP et 8080 pour le proxy).
passer le type de chemin (entier) : le(s) chemin(s) est(sont) paramétré(s) dans le fichier INI. Passez ici une constante qui dira, à la méthode, quel chemin tester : ::_clapMAJSourceRép, ::_clapMAJSourceHTTP ou ::_clapMAJSourceFTP (ou une combinaison de ces trois constantes ou ::_clapMAJSourceToutes qui est la somme des trois constantes).
bTélécharge (booléen - valeur par défaut = faux) : mettre à vrai si le fichier à jour doit être téléchargé dans le répertoire temporaire de mise-à-jour (voir MAJInit).
bAfficheJauge (booléen - valeur par défaut = faux) : mettre à vrai pour permettre l'affichage d'une jauge durant le téléchargement HTTP ou FTP du fichier à jour (la barre de message de cette fenêtre a été activée dans cette dernière). La méthode supprime la jauge à la fin de son exécution, grâce à l'instruction Jauge(""), si le paramètre bAfficheJauge=vrai.
sPréfixeJauge (chaîne - valeur vide par défaut) : texte à affiche à droite de la jauge (lorsque celle-ci est demandée par le paramètre bAfficheJauge=vrai). Dans tout les cas, la fin du texte affiché à droite de la jauge sera toujours le pourcentage de téléchargement (sous forme nnn.n%).
sNomDuThread (chaîne - valeur par défaut = threadPrincipal) : Nom du thread qui appelle cette méthode. Est nécessaire si cette méthode est appelée dans une procédure automatique du programme principal. Dans ce cas, utiliser la fonction ThreadCourant() dans l'appel de cette méthode (attention, fonction disponible en WinDev 14 et supérieur). Permet de lancer le téléchargement d'une mise à jour en tâche de fond.
Valeur de retour
entier
::_clapMAJÉtatEnVérif : si la mise-à-jour est en cours de réception (bTélécharge=faux)
::_clapMAJÉtatPrête si la mise-à-jour est déjà sur le poste (bTélécharge à vrai ou faux) ou si elle a été téléchargée avec succès (bTélécharge doit être à vrai)
::_clapMAJÉtatDispoFTP ou ::_clapMAJÉtatDispoHTTP ou ::_clapMAJÉtatExisteSurRep: si bTélécharge est à faux et qu'une mise à jour a été détectée (sur une de ces 3 places si tant est qu'elles aient été paramétrées dans le fichier ini).
::_clapMAJÉtatInexistante : si aucune mise à jour n'est disponible
::_clapMAJÉtatEnCoursDeRéception : si la mise-à-jour est en cours de réception (bTélécharge=vrai)
::_clapMAJÉtatPasPlusRécente : spécifie que la version du serveur n'est pas plus récente que la version locale (ou que le fichier n'a été trouvé nulle part, sauf dans une seule source et n'est plus récente à la version locale)
::_clapMAJÉtatÉchouée dans tous les autres cas, message d'erreur dans le membre :m_sErreur
:m_sErreur : Si une vérification de fichier ne trouve rien, le message d'erreur donne les valeurs de retour de chaque "chemin" demandé (répertoire, HTTP et FTP) : exemple si le FTP et le HTTP ont été configurés :
Erreur durant le téléchargement depuis le FTP : le fichier ou le répertoire MonFichier.TXT n'existe pas
Aucun serveur HTTP configuré
Exemple
SI cMaj:nVérifieSiExiste(ExeInfo(),"http://www.lapalys.com/software/update",Vrai) ALORS 
	cMaj:bApplique(Vrai) 
SINON 
	erreur(cMaj:m_sErreur) 
FIN


Méthode 'bApplique'

Résumé
Si la méthode :nVérifieSiExiste() renvoie ::_clapMAJÉtatPrête alors le fichier à mettre à jour a bien été téléchargé et la mise-à-jour peut être appliquée par cette méthode.
Dans le cas où la mise-à-jour concerne l'exécutable en cours (*), un fichier update.bat est créé dans le répertoire temporaire de Windows et sera exécuté juste après la fermeture de l'application par un FinProgramme() présent dans cette méthode. Ce fichier .BAT remplacera l'exécutable et/ou les dll et relancera ensuite l'application si le paramètre bRelance = vrai.
Dans le cas où la mise-à-jour concerne l'exécutable en cours (*), le fichier à mettre à jour est supprimé et remplacé par sa version plus récente.
Attention dans le cas où la mise-à-jour concerne plusieurs fichiers, en ayant utilisé le paramètre bTout=vrai, veuillez consulter les astuces.
L'utilisation du paramètre "sProcédureFermeture" est conseillée. En effet dans les exemples de la page d'utilisation de ce composant, plusieurs procédures sont "automatiques" (sont donc paramétrées pour être lancées dans un thread) et il est toujours bon qu'une procédure permette de fermer ces threads avant la fermeture du programme (avant redémarrage).
Syntaxe
[ <Résultat> = ] bApplique ( [<sCheminFichier> est une chaîne [, <bRelance> est un booléen [, <sProcédureFermeture> est une chaîne ]]])


Paramètres
sCheminFichier (chaîne - valeur vide par défaut) : si ce paramètre est une chaîne vide, toutes les mises-à-jour téléchargées vont se faire en une fois. Mettre le chemin d'un fichier pour remplacer uniquement ce fichier (si c'est un fichier du programme, veillez à mettre bRelance à vrai sinon une erreur sera renvoyée).
bRelance (booléen - valeur par défaut = faux) : mettre à "vrai" si l'on veut relancer l'exécutable en cours (*) après sa mise-à-jour. Si la mise à jour ne concerne pas l'exécutable ou un de ses fichiers satellite, ce paramètre n'est pas pris en compte.
sProcédureFermeture (chaîne - valeur vide par défaut) : donner le nom de la procédure du projet (entre guillemets) qui permet de fermer le programme proprement avant que la mise à jour ne soit effectuée (si la procédure est dans une fenêtre, mettre NomDeFenêtre.NomDeProcédure).


Valeur de retour
booléen : vrai si la mise-à-jour a été faite ou si le fichier bat est prêt (cas de l'exécutable ou des dll), faux dans les autres cas (le message d'erreur se trouve dans :m_sErreur)


Exemple
SI PAS cMaj:bMAJApplique() ALORS Erreur(cMaj:m_sErreur)


Méthode 'bÉtatDeLaMAJ'

Résumé
Cette méthode récupère l'état d'avancement (vérification, téléchargement, erreur) de la mise à jour demandées par la méthode :nVérifieSiExiste


Syntaxe
[ <Résultat> = ] bÉtatDeLaMAJ ( <sCheminFichier> est chaîne )


Paramètres
sCheminFichier(chaîne) : Chemin du fichier dont on veut connaître l'état


Valeur de retour
entier : une des constantes ::_clapMAJÉtatxxxx ci-dessous


Exemple
nRes est un entier = cMaj:nVérifieSiExiste(fRepExe()+"\MonExécutable.exe",Faux,Vrai)
SELON nRes
	CAS clapMAJ::_clapMAJÉtatPasEncoreVérifiée 	: Info("Pas encore vérifié")
	CAS clapMAJ::_clapMAJÉtatEnVérif		: Info("En vérification")
	CAS clapMAJ::_clapMAJÉtatEnCoursDeRéception	: Info("En réception")
	CAS clapMAJ::_clapMAJÉtatExisteSurRep 		: Info("Existe dans le répertoire")
	CAS clapMAJ::_clapMAJÉtatExisteSurFTP		: Info("Existe FTP")
	CAS clapMAJ::_clapMAJÉtatExisteSurHTTP		: Info("Existe HTTP")
	CAS clapMAJ::_clapMAJÉtatPrête			: Info("Prête")
	CAS clapMAJ::_clapMAJÉtatInexistante 		: Info("Inexistante",cMaj:m_sErreur)
	CAS clapMAJ::_clapMAJÉtatPasPlusRécente 	: Info("Pas plus récente")
	CAS clapMAJ::_clapMAJÉtatÉchouée		: Info("Échouée",cMaj:m_sErreur)
	AUTRE CAS : Info("État inconnu")
FIN


Méthode 'ListeSupprimeTout'

Résumé
Supprime le tableau contenant la mémoire de tous les fichiers téléchargés depuis la première instanciation de la classe. Ne supprime pas les fichiers (téléchargés ou locaux).


Syntaxe
ListeSupprimeTout ()


Paramètres
Aucun


Valeur de retour
Aucune


Exemple
cMaj:ListeSupprimeTout()


Méthode 'ListeSupprime'

Résumé
Supprime le fichier passé en paramètre dans le tableau des fichiers téléchargés. Ne supprime pas le fichier (téléchargé ou local).


Syntaxe
ListeSupprime ( [<sCheminFichier> est chaîne])


Paramètres
sCheminFichier (chaîne) : chemin du fichier à supprimer de la mémoire de mise-à-jour (pour éviter qu'il fasse partie du traitement de bApplique() ).


Valeur de retour
Aucune


Exemple
cMaj:ListeSupprime()


Méthode 'sListeMAJ'

Résumé
Renvoie la liste de tous les fichiers vérifiés et/ou téléchargés avec leur état (voir constantes ::_clapMAJÉtatxxx)


Syntaxe
[ <Résultat> = ] sListeMAJ ()


Paramètres
Aucun


Valeur de retour
chaîne : CheminDuFichier1 + TAB + État + RC + CheminDuFichier2 + TAB + État +...


Exemple
sListeDesFichiers est une chaîne = cMAJ:ListeMAJ()


Manipulation des éléments accessibles

Pour utiliser une classe : déclarer une variable du type de la classe :

cMAJ est un objet clapMAJ

La variable s'utilise par la suite comme une variable objet normale (voir exemple d'utilisation ci-dessus).


Constantes

  • clapMAJ::_clapMAJÉtatPasEncoreVérifiée = 0
  • clapMAJ::_clapMAJÉtatEnVérif = 1
  • clapMAJ::_clapMAJÉtatEnCoursDeRéception = 2
  • clapMAJ::_clapMAJÉtatExisteSurRep = 3
  • clapMAJ::_clapMAJÉtatExisteSurFTP = 4
  • clapMAJ::_clapMAJÉtatExisteSurHTTP = 5
  • clapMAJ::_clapMAJÉtatPrête = 6
  • clapMAJ::_clapMAJÉtatInexistante = 7
  • clapMAJ::_clapMAJÉtatPasPlusRécente = 8
  • clapMAJ::_clapMAJÉtatÉchouée = 9


Variable non modifiables

  • clapMAJ:m_sErreur : Dernier message d'erreur
  • clapMAJ:m_sRépertoireMAJ : Répertoire où iront les nouvelles versions des fichiers


Dysfonctionnements, commentaires et suggestions

Merci de contacter notre support. Vous trouverez nos coordonnées et les conditions bas de notre site internet.

Notes

(*) L'exécutable en cours utilise divers fichiers : le fichier exécutable EXE, des DLL PC SOFT, parfois un librairie .WDL et/ou des composants .WDK et/ou une analyse .WDD


Liens utiles

Utilisation du composant

Téléchargement et licence