Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WD14 - Mise à jour automatique d'une application

28 réponses
Avatar
Michel
Bonjour,

J'ai plac=E9 une application sur un serveur web pour permettre aux
utilisateurs de la t=E9l=E9charger puis de l'installer chez eux. D=E8s
qu'ils lancent leur application et qu'une mise =E0 jour est disponible
sur le serveur, les utilisateurs ont la possibilit=E9 d'en b=E9n=E9ficier.
Aujourd'hui, je souhaite changer le serveur qui sert au
t=E9l=E9chargement.
Comment faut-il proc=E9der pour que cela soit transparent pour les
utilisateurs ?
Est-ce qu'il est possible de pr=E9ciser dans l'exe de la derni=E8re
version disponible sur le serveur A que dor=E9navant les mises =E0 jour
seront sur le serveur B ?
Merci d'avance

10 réponses

1 2 3
Avatar
Gilles
Alex a formulé ce vendredi :
Non dans un timer lancé par une classe au démarrage du projet :
Sinon tu lances un timer dans la fenêtre principale.

Ça devrait aussi marcher avec un thread.
Mais j'ai pas voulu me compliquer la vie.



Et t'as essayé de couper l'accès à internet ou de couper le serveur...

A moins que ça ait changé en V14, ça devrait être assez désagréable
pour les utilisateurs.
Avatar
Alex
> Et t'as essayé de couper l'accès à internet ou de couper le serveur ...



-je débranche le câble réseau
-HttpRequete échoue
-l'appli met une variable à Faux et zappe toutes les requêtes
suivantes
-sauf si tu demandes la mise à jour avec un menu
-dans quel cas la variable est remise à Vrai si la requête passe

Il y a aussi le cas du proxy :
-soit tu le réglés dans les options
-soit tu n'a pas accès aux mises à jour au taf

A moins que ça ait changé en V14, ça devrait être assez désagr éable
pour les utilisateurs.



Globalement ça roule,
il faut juste afficher les messages adaptés selon le cas,
et gérer les erreurs.
Avatar
Alex
Je suis assez satisfait des classes et objets en windev.
J'en fais une utilisation assez simple mais c'est suffisant.
Avatar
Alex
PROCEDURE mbRequete(LOCAL sRequete est une chaîne = :asHttpRequete,
LOCAL sFicDest est une chaîne=:asHttpFichier)

bRes est un booléen
sLib est une chaîne

SI SansEspace(sRequete)="" ALORS RENVOYER Faux

cApp::gbInternet = InternetConnecté()
SI PAS cApp::gbInternet ALORS RENVOYER Faux

sLib = cApp::gsLang("j.r")
cApp::goJau:mbLibelle(sLib)
Sablier()

:asHttpRequete = sRequete
:asHttpFichier=sFicDest
:abHttpRequete = HTTPRequête
(:asHttpRequete, ::gsHttpAgent, :asHttpEntete, :asHttpMessage, :asHttpMessa geType, :asHttpUser, :asHttpPwd)
:asHttpEntete = HTTPDonneRésultat(httpEntête)
:asHttpResultat = HTTPDonneRésultat(httpRésultat)
:anHttpResultatTaille = Taille(:asHttpResultat)

// Coupe les accés Internet si erreur HTTP
SI PAS :abHttpRequete ALORS
cApp::gbUpdateAfficherúux
FIN

SI (sFicDest<>"") ET (:asHttpResultat<>"") ET :abHttpRequete ALORS
:anHttpFichierId = fOuvre(:asHttpFichier, foCréation)
SI :anHttpFichierId<>-1 ALORS
:anHttpFichierOctetsEcritsþcrit
(:anHttpFichierId, :asHttpResultat, :anHttpResultatTaille)
SI :anHttpFichierOctetsEcrits<>-1 ALORS
// Ecriture OK
FIN
FIN
FIN

Sablier(Faux)
RENVOYER PAS :mbErreurDetectee(sLib)
Avatar
Alex
Voila un auto-update simple.

Bon il y a des classes que je ne peux pas poster en entier,
mais ça donne une idée.

Alex :)
Avatar
Gilles
Alex a formulé la demande :
Et t'as essayé de couper l'accès à internet ou de couper le serveur...



-je débranche le câble réseau
-HttpRequete échoue
-l'appli met une variable à Faux et zappe toutes les requêtes
suivantes
-sauf si tu demandes la mise à jour avec un menu
-dans quel cas la variable est remise à Vrai si la requête passe

Il y a aussi le cas du proxy :
-soit tu le réglés dans les options
-soit tu n'a pas accès aux mises à jour au taf

A moins que ça ait changé en V14, ça devrait être assez désagréable
pour les utilisateurs.



Globalement ça roule,
il faut juste afficher les messages adaptés selon le cas,
et gérer les erreurs.



C'est que ça a changé alors...
Parce qu'en V11, HttpRequete bloque salement le thread principal dans
un cas pareil...
Avatar
Gilles
Alex a exposé le 10/10/2009 :
Voila un auto-update simple.

Bon il y a des classes que je ne peux pas poster en entier,
mais ça donne une idée.

Alex :)



C'est gentil de poster tout ça ;)
Ca fait quelques années que j'ai fait l'auto update, c'était juste pour
savoir si httprequete était moins foireux qu'avant...
Avatar
Alex
Je me doute que chacun a sa solution.
S'était pour donner des idées à Michel qui a posé la question.

Pour moi le HttpRequette fonctionne nickel.

D'ailleurs c'est marrant dans mes stat OVH
je retrouve la valeur ::gsHttpAgent (nom appli+version).

J'ai une stat d'utilisation de l'appli par version.
Avatar
Gilles
Alex a présenté l'énoncé suivant :
Je me doute que chacun a sa solution.
S'était pour donner des idées à Michel qui a posé la question.

Pour moi le HttpRequette fonctionne nickel.

D'ailleurs c'est marrant dans mes stat OVH
je retrouve la valeur ::gsHttpAgent (nom appli+version).



C'est qu'il doit valoriser tout seul en 14, ce n'était pas le cas en
11, je la valorise moi même. (et c'était pire avant, il y avait
n'importe quoi "httputil.exe" un truc du genre)
Avatar
Michel
On 10 oct, 00:00, Alex wrote:
Je ne me suis pas pris la tete :
-requete HTTP
-écriture du résultat dans un ini local
-lecture des variables avec inilit
-actions en fonction des variables trouvées



Bonjour, c'est exactement ce que je faisais avant d'acheter WD14. Et
comme ma solution n'était pas satisfaisante à 100% (pb lié au
changement du .exe et du .wdl en cours de fonctionnement, pb de
blocage lors du téléchargement de la mise à jour), j'ai cédé à la
facilité, j'ai supprimé toutes mes procédures en me disant que cette
possibilité offerte par WD14 allait simplifier mon code. C'était pour
moi un pb de moins à gérer.
Le problème est qu'aujourd'hui je dois changer l'adresse du serveur.
Je pense que je vais faire simple et prévenir les utilisateurs par
mail en leur donnant le lien de la nouvelle version ...
1 2 3