UpdateTool
Publié : mer. 21/avr./2004 16:40
Comme vous ne l'ignorez (je l'espère) pas, je travaille sur un lecteur multimédia. Et j'ai eu l'idée d'un "UpdateTool" par Internet (comme SmartUpdate) mais a ma sauce (l'horreur, quoi) et comme il est sous license GPL (comme le lecteur multimédia, mais qui lui n'est pas encore pret (n'allez pas chercher de logique la dedans il n'y en a pas)), je vous donne les sources ici, pas besoin de se dire que c'est un truc génial ! C'est la base de programmation (n'étant pas un programmeur génial...)
Et voici le bout de code a inserer en en-tête du programme principal (pour gérer la mise à jour de UpdateTool)Testé et approuvé 
Et voici l'exemple d'un "Update.txt"
PS : Ne vous amusez pas a télécharger les fichiers qui sont sur le serveur, sinon le lecteur multimédia serait plombé avant sa sortie... De plus il est loin d'être fini ET débuggé.
Code : Tout sélectionner
Enumeration
#Window_0
#ProgressBar_1
#Text_0
#Text_1
#ProgressBar_2
#Text_2
#Text_3
#ProgressBar_3
EndEnumeration
Global PB
Procedure Update(file$)
SetGadgetText(#Text_2, file$+" :")
SetGadgetState(#ProgressBar_1, 0)
If URLDownloadToFile_(0,"http://heisspiter.no-ip.com/update/"+file$, Currentdirectory$+file$,0,0) = #S_OK
PB = PB + 1
SetGadgetState(#ProgressBar_1, 1)
SetGadgetState(#ProgressBar_2, PB)
SetGadgetState(#ProgressBar_3, PB)
Else
MessageRequester("Erreur", "Impossible de mettre "+file$+" à jour ! Abandon de la mise à jour !", #MB_ICONERROR)
End
EndIf
EndProcedure
If ReadFile(2, "infos.ini")
nom$ = ReadString()
adresse$ = ReadString()
lversion$ = ReadString()
If lversion$ = ""
MessageRequester("Erreur", "Impossible de détecter la version actuelle !", #MB_ICONERROR)
End
EndIf
CloseFile(2)
Else
MessageRequester("Erreur", "Impossible de détecter la version actuelle !", #MB_ICONERROR)
End
EndIf
Currentdirectory$ = Space(255)
GetCurrentDirectory_(255, Currentdirectory$)
If Right(Currentdirectory$, 1) <> "\"
Currentdirectory$ = Currentdirectory$+"\"
EndIf
If InitNetwork() = 0
MessageRequester("Erreur", "Impossible d'initialiser le réseau !", #MB_ICONERROR)
End
EndIf
ConnectionID = OpenNetworkConnection("heisspiter.no-ip.com", 80)
If ConnectionID
If URLDownloadToFile_(0,"http://heisspiter.no-ip.com/update/Update.txt", Currentdirectory$+"Update.txt",0,0) = #S_OK
ReadFile(1, Currentdirectory$+"Update.txt")
Version$ = ReadString()
If Version$ = lversion$
MessageRequester("Erreur", "Aucune mise à jour disponible", #MB_ICONERROR)
End
Else
Rep = MessageRequester("Information", "Une mise à jour est disponible ("+Version$+"). Voulez-vous l'installer ?", #PB_MessageRequester_YesNo | #MB_ICONINFORMATION)
If Rep = 7
MessageRequester("Attention", "La mise à jour a été abandonnée !", #MB_ICONWARNING)
End
ElseIf Rep = 6
multipexe$ = ReadString()
aboutdll$ = ReadString()
updateexe$ = ReadString()
bmppack$ = ReadString()
nb=0
If multipexe$ = "1"
nb = nb+1
EndIf
If aboutdll$ = "1"
nb = nb+1
EndIf
update=0
If updateexe$ = "1"
nb=nb+1
update=1
EndIf
If bmppack$ = "1"
nb = nb+1
EndIf
If OpenWindow(#Window_0, 276, 190, 380, 121, #PB_Window_SystemMenu | #PB_Window_TitleBar , "Mise à jour")
If CreateGadgetList(WindowID())
ProgressBarGadget(#ProgressBar_1, 0, 20, 380, 20, 0, 1)
TextGadget(#Text_0, 0, 0, 100, 20, "Téléchargement de ")
TextGadget(#Text_1, 0, 40, 50, 20, "Général :")
ProgressBarGadget(#ProgressBar_2, 0, 60, 380, 20, 0, nb)
TextGadget(#Text_2, 100, 0, 280, 20, ":")
TextGadget(#Text_3, 0, 80, 60, 20, "Installation : ")
ProgressBarGadget(#ProgressBar_3, 0, 100, 380, 20, 0, nb+1)
EndIf
EndIf
PB = 0
If multipexe$ = "1"
Update("MultiP.exe")
EndIf
If aboutdll$ = "1"
Update("About.dll")
EndIf
If updateexe$ = "1"
file$ = "update.exe"
SetGadgetText(#Text_2, file$+" :")
SetGadgetState(#ProgressBar_1, 0)
CreateDirectory(Currentdirectory$+"Update")
CreateFile(3, "update.ini")
If URLDownloadToFile_(0,"http://heisspiter.no-ip.com/update/"+file$, Currentdirectory$+"update/"+file$,0,0) = #S_OK
PB = PB + 1
SetGadgetState(#ProgressBar_1, 1)
SetGadgetState(#ProgressBar_2, PB)
SetGadgetState(#ProgressBar_3, PB)
Else
MessageRequester("Erreur", "Impossible de mettre "+file$+" à jour ! Abandon de la mise à jour !", #MB_ICONERROR)
End
EndIf
EndIf
If bmppack$ = "1"
Update("bmp\bmp.pak")
EndIf
If DeleteFile(Currentdirectory$+"infos.ini")
If CreateFile(3, Currentdirectory$+"infos.ini")
WriteStringN(nom$)
WriteStringN(adresse$)
WriteStringN(Version$)
Else
MessageRequester("Attention", "Impossible de refaire 'infos.ini' ! Vous devrez vous réenregistrer au prochain lancement", #MB_ICONINFORMATION)
EndIf
Else
MessageRequester("Attention", "Impossible de supprimer 'infos.ini' ! Veuillez le supprimer manuellement.", #MB_ICONINFORMATION)
EndIf
DeleteFile(Currentdirectory$+"Update.txt")
SetGadgetState(#ProgressBar_3, nb+1)
If update = 0
MessageRequester("Information", "La mise à jour a été réalisée avec succès !", #MB_ICONINFORMATION)
ElseIf update = 1
MessageRequester("Information", "La mise à jour est bientôt terminée. Pour pouvoir correctement la terminer, veuillez relancer le lecteur Multimédia.", #MB_ICONINFORMATION)
EndIf
EndIf
EndIf
Else
MessageRequester("Erreur", "Impossible de télécharger les informations de mise à jour !", #MB_ICONERROR)
End
EndIf
Else
MessageRequester("Erreur", "Impossible de se connecter à heisspiter.no-ip.com:80 !", #MB_ICONERROR)
End
EndIf
Code : Tout sélectionner
Currentdirectory$ = Space(255)
GetCurrentDirectory_(255, Currentdirectory$)
If Right(Currentdirectory$, 1) <> "\"
Currentdirectory$ = Currentdirectory$+"\"
EndIf
update=0
If ReadFile(1, "update.ini")
CopyFile(Currentdirectory$+"update\update.exe", Currentdirectory$+"update.exe")
update=1
EndIf
If update=1
CloseFile(1)
DeleteFile(Currentdirectory$+"update.ini")
DeleteFile(Currentdirectory$+"update\update.exe")
DeleteDirectory(Currentdirectory$+"update\", "*.*", #PB_FileSystem_Recursive | #PB_FileSystem_Force)
EndIf

Et voici l'exemple d'un "Update.txt"
Voila ! Régalez vous1.00RC2
1
1
1
0

PS : Ne vous amusez pas a télécharger les fichiers qui sont sur le serveur, sinon le lecteur multimédia serait plombé avant sa sortie... De plus il est loin d'être fini ET débuggé.