Message de rapport:
 

Re: Live Update

Sujet: Re: Live Update
par lmame sur 16/7/2010 23:49:12

Bon de mon côté j'en ai "un peu" marre de leur usine à gaz et de voir comment marche leur mailslot.
Je te passe la classe que j'ai faite et comment l'utiliser dans ton soft client (classe cl_checkupdate):
http://www.lmame-bug.com/cl_checkupdate.rar


Ca c'est à mettre dans le code de ton projet (code du lancement du projet):
gclMyUpdate est une cl_checkupdate


//on lance le procédure de maj.
IF gclMyUpdate:init() THEN
			
	//téléchargement du fichier d'update.
	IF gclMyUpdate:download() THEN
		
		//comparaison du fichier téléchargé.
		IF gclMyUpdate:compare_net() THEN
			//mise à jour facultative.
			IF gclMyUpdate:m_bDo_maj THEN
				IF OuiNon("Une mise à jour facultative est disponible, voulez vous l'installer?") THEN
					gclMyUpdate:launch_wdsetup()
				END
				
			END
			
			//mise à jour obligatoire.
			IF gclMyUpdate:m_bForce_maj THEN
				Info("Une mise à jour obligatoire est disponible pour ce logiciel, elle va être téléchargée")
				gclMyUpdate:launch_wdsetup()
				//Le ferme devrait être inutile, mais bon... on sait jamais.
				Ferme
			END
			
		END
		
	END
	
END


En gros avec ça le client lit le fichier local "LMA_UPDATE.NET" (pas celui du dossier INSTALL, celui dans le même dossier que l'exe du soft client) qui est exactement le même que le "WDUPDATE.NET" sauf que j'ai rajouté deux entrées LOGIN et PASSWORD (même principe que pour mon install.exe).
Tu peux à la rigueur le nommer pareil, WDUPDATE.NET. Le premier check pcsoft va échouer car il ne pourra pas télécharger le fichier car celui-ci est protégé par un login / password sur le serveur et ensuite mon code passera derrière.

Ca récupère le fichier:
SERVEUR/CHEMIN/INSTALL/WDUPDATE.NET (avec login et password).
Ca le sauve dans le dossier INSTALL du client sous le nom "test_update.net" et le compare ensuite avec les valeurs qu'il a lue dans le LMA_UPDATE.NET (versions etc...) pour voir s'il faut faire une maj optionnelle ou obligatoire.
En cas donc il lance alors wdsetup avec la bonne ligne de commande.

Après, je pense qu'il faut virer la partie "mapping" et "mailslot" côté wdsetup (cherche les appelDLL) et tout simplement récupérer aussi le nouveau WDUPDATE.NET côté serveur et faire la maj.
Ca devrait être possible sans trop de mal.
Voire même tu peux passer les infos de la version en cours directement par la ligne de commande j'imagine.

Franchement je me demande pourquoi ils se sont pris la tête avec un tel système surtout si on peut pas y mettre les mains :(


Edit:
Si tu veux débugger le wdsetup tu peux rajouter ça dans le Win.ini:
[WDSETUP]
Debug=1
XTraceFen=1
XTrace=1


Ca écrira un dump, un fichier de log dans c:\temp\ et ça affichera les infos de debug dans une fenêtre trace.
Pas besoin de recompiler wdsetup pour la prise en charge dès que tu modifies le win.ini c'est bon :)
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2