AutoIt Français

Nouveau forum : http://www.autoitscript.fr/
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexionhttp://www.autoitscript.fr

Partagez | 
 

 synchronisation de fichier

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
darkmaka
Débutant
Débutant


Nombre de messages : 15
Date d'inscription : 15/05/2007

MessageSujet: synchronisation de fichier   2007-05-26, 15:33

Voilà, je voudrais créer un petit programme qui fait que lorsque je modifie un fichier, la personne en lançant le programme, ne télécharge que les fichiers modifiés.

Ces derniers seront sur un serveur FTP .
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: synchronisation de fichier   2007-05-26, 20:29

Comme ça, avant de commencer à regarder les accés FTP , est ce que tu connais ce super soft de synchro free du nom de SyncBack
http://www.2brightsparks.com/downloads.html#freeware

Il gère le ftp est propose des modes de comparaisons multiples.
Autre avantage, tu peux paramétrer un type de synchro, avec ton serveur ftp, les login mdp ... et sauver ce paramétrage dans un fichier que tu transmettra à tes utlisateurs.

Maintenant, on peut se lancer dans qq chose de purement Autoit ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
darkmaka
Débutant
Débutant


Nombre de messages : 15
Date d'inscription : 15/05/2007

MessageSujet: Re: synchronisation de fichier   2007-05-26, 21:12

Merci, je vais tester ça
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
darkmaka
Débutant
Débutant


Nombre de messages : 15
Date d'inscription : 15/05/2007

MessageSujet: Re: synchronisation de fichier   2007-06-01, 00:04

En faite, je me suis mal exprimé, ce que je voulais, c'était que l'utilisateur puisse mettre à jour l'éxecutable et les fichiers annexes a partir de l'exe en lui -même
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
darkmaka
Débutant
Débutant


Nombre de messages : 15
Date d'inscription : 15/05/2007

MessageSujet: Re: synchronisation de fichier   2007-06-01, 01:02

J'ai cherché un peu et voilà mon script

#include
DirCreate(@TempDir & "test")
FileInstall("Update Switcher.exe", @TempDir & "Update Switcher.exe", 1)
Global $Update = 0, $Return = -1, $C, $P, $PS, $U, $US, $R, $PV, $UV, $Count, $Data, $GUI, $Button, $Status, $Progress
Global $List[6]
$List[0] = "test.ini"
$List[1] = "Fichier.exe"
$List[2] = "test.exe"
$List[3] = "Update.exe"
$List[4] = "Update.au3"
$List[5] = "Readme.txt"
$GUI = GUICreate("Test Update", 455, 265)
GUISetBkColor(0xA6CAF0)
$Button = GUICtrlCreateButton("Start", 350, 230, 95, 25, BitOR($BS_CENTER, $BS_VCENTER, $WS_BORDER), $WS_EX_STATICEDGE)
$Status = GUICtrlCreateEdit("", 10, 10, 435, 210, BitOR($ES_AUTOVSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL, $WS_BORDER), BitOR($WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
GUICtrlSetData($Status, "Status")
$Progress = GUICtrlCreateProgress(10, 230, 335, 25, $WS_BORDER)
GUICtrlSetData($Progress, 0)
GUISetState(@SW_SHOW)
While 1
$Msg = GUIGetMsg()
Select
Case $Msg = $GUI_EVENT_CLOSE
ExitLoop
Case $Msg = $Button And $Update = 0
$Update = 1
GUICtrlSetState($Button, $GUI_DISABLE)
$Data = "Recherche de Mise à Jour ..... "
SetData()
$Return = Compare()
$Data = $Data & "Terminé!" & @CRLF
SetData()
Select
Case $Return = 1
$Count = 0
$End = UBound($List) - 1
For $Count = 0 To $End Step 1
$Data = $Data & "Téléchargement " & $List[$Count] & " ..... "
SetData()
AutoDownload($List[$Count])
$Data = $Data & "Terminé" & @CRLF
SetData()
GUICtrlSetData($Progress, (100 / UBound($List)) * ($Count + 1))
Next
$Data = $Data & "Mise à jour ..... "
SetData()
For $Count = 0 To $End Step 1
If $Count = 3 Then $Count = 4
FileMove(@TempDir & "WoW Fisher Update" & $List[$Count], $List[$Count], 1)
Next
$Data = $Data & "Mise à jour terminée!" & @CRLF & @CRLF
SetData()
GUICtrlSetData($Progress, 100)
Case Else
GUICtrlSetData($Status, "Pas besoin de Mise à Jour" & @CRLF & @CRLF & "Done.")
EndSelect
GUICtrlSetData($Button, "Finis!")
GUICtrlSetState($Button, $GUI_ENABLE)
$Update = 2
Case $Msg = $Button And $Update = 2
GUICtrlDelete($Button)
GUICtrlDelete($Status)
GUICtrlDelete($Progress)
GUIDelete($GUI)
ExitLoop
EndSelect
WEnd
If $Update = 2 Then Run(@TempDir & "Update Switcher.exe", @ScriptDir)
Exit
Func AutoDownload($File)
InetGet("http://ofylling.free.fr/test/" & $File, @TempDir & "test" & $File, 1, 0)
EndFunc ;==>AutoDownload
Func Compare()
$C = FileGetSize($List[0])
$P = FileGetSize($List[1])
$PS = FileGetSize($List[2])
$U = FileGetSize($List[3])
$US = FileGetSize($List[4])
$R = FileGetSize($List[5])
Select
Case $C <> Size($List[0]) Or $P <> Size($List[1]) Or $PS <> Size($List[2]) Or $U <> Size($List[3]) Or $US <> Size($List[4]) Or $R <> Size($List[5])
Return 1
EndSelect
Return 0
EndFunc ;==>Compare
Func SetData()
GUICtrlSetData($Status, $Data)
EndFunc ;==>SetData
Func Size($File)
Return InetGetSize("http://ofylling.free.fr/test/" & $File)
EndFunc ;==>Size
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: synchronisation de fichier   2007-06-01, 20:37

L'idée est bonne, mais il faudra que tu fasses attention que d'une version à l'autre ton poids diffère.
Maintenant, dès qu'un fichier diffère, on retélécharge tout.
Pour éviter ceci, je viens de modifier ton code avec :
- un tableau qui stocke les tailles de chaque fichier, au lieu de 6 vars indépendantes
- changment de $list[6] en $list[6][2], avec comme premier elt le nom du fichier, et en deuxième composante un booléen par défaut à 0 pour indiquer qu'il ne faut pas télécharger
-changement de la fnction de verif qui mets à 1 chaque booléen de fichier véritablement cangé
- à l'update, on regarde la valeur du booléene pour faire le get ou non

#include <GUIConstants.au3>
DirCreate(@TempDir & "test")
FileInstall("Update Switcher.exe", @TempDir & "Update Switcher.exe", 1)
Global $Dim_max=6
Global $Update = 0, $Return = -1, $C, $P, $PS, $U, $US, $R, $PV, $UV, $Count, $Data, $GUI, $Button, $Status, $Progress
Global $List[$Dim_max][2]
$List[0][0] = "test.ini"
$List[0][1]=0
$List[1][0] = "Fichier.exe"
$List[1][1] =0
$List[2][0] = "test.exe"
$List[2][1] = 0
$List[3][0] = "Update.exe"
$List[3][1] = 0
$List[4][0] = "Update.au3"
$List[4][1] = 0
$List[5][0] = "Readme.txt"
$List[5][1] = 0
Dim $tab_taille[$Dim_max]
$GUI = GUICreate("Test Update", 455, 265)
GUISetBkColor(0xA6CAF0)
$Button = GUICtrlCreateButton("Start", 350, 230, 95, 25, BitOR($BS_CENTER, $BS_VCENTER, $WS_BORDER), $WS_EX_STATICEDGE)
$Status = GUICtrlCreateEdit("", 10, 10, 435, 210, BitOR($ES_AUTOVSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL, $WS_BORDER), BitOR($WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
GUICtrlSetData($Status, "Status")
$Progress = GUICtrlCreateProgress(10, 230, 335, 25, $WS_BORDER)
GUICtrlSetData($Progress, 0)
GUISetState(@SW_SHOW)
While 1
$Msg = GUIGetMsg()
Select
Case $Msg = $GUI_EVENT_CLOSE
ExitLoop
Case $Msg = $Button And $Update = 0
$Update = 1
GUICtrlSetState($Button, $GUI_DISABLE)
$Data = "Recherche de Mise à Jour ..... "
SetData()
$Return = Compare()
$Data = $Data & "Terminé!" & @CRLF
SetData()
Select
Case $Return = 1
$Count = 0
;$End = UBound($List) - 1
For $Count = 0 To $Dim_max-1 Step 1
$Data = $Data & "Téléchargement " & $List[$Count] & " ..... "
SetData()
If ($List[$Count][1]=1) Then AutoDownload($List[$Count])
$Data = $Data & "Terminé" & @CRLF
SetData()
GUICtrlSetData($Progress, (100 / $Dim_max) * ($Count + 1))
Next
$Data = $Data & "Mise à jour ..... "
SetData()
For $Count = 0 To $Dim_max-1 Step 1
If $Count = 3 Then $Count = 4
FileMove(@TempDir & "WoW Fisher Update" & $List[$Count], $List[$Count], 1)
Next
$Data = $Data & "Mise à jour terminée!" & @CRLF & @CRLF
SetData()
GUICtrlSetData($Progress, 100)
Case Else
GUICtrlSetData($Status, "Pas besoin de Mise à Jour" & @CRLF & @CRLF & "Done.")
EndSelect
GUICtrlSetData($Button, "Finis!")
GUICtrlSetState($Button, $GUI_ENABLE)
$Update = 2
Case $Msg = $Button And $Update = 2
GUICtrlDelete($Button)
GUICtrlDelete($Status)
GUICtrlDelete($Progress)
GUIDelete($GUI)
ExitLoop
EndSelect
WEnd
If $Update = 2 Then Run(@TempDir & "Update Switcher.exe", @ScriptDir)
Exit
Func AutoDownload($File)
InetGet("http://ofylling.free.fr/test/" & $File, @TempDir & "test" & $File, 1, 0)
EndFunc ;==>AutoDownload
Func Compare()
Local $local_ind,$local_ret=0
for $ind=0 to $Dim_max-1
$tab_taille[$local_ind]=FileGetSize($List[$local_ind][0])
If $tab_taille[$local_ind]<> Size($List[$local_ind][0]) Then
$List[$local_ind][1]=1
$local_ret=1
Else
$List[$local_ind][1]=0
EndIf
Next
Return $local_ret
EndFunc ;==>Compare
Func SetData()
GUICtrlSetData($Status, $Data)
EndFunc ;==>SetData
Func Size($File)
Return InetGetSize("http://ofylling.free.fr/test/" & $File)
EndFunc ;==>Size


Comme je n'ai pas pu le faire tourné pour de vrai, il reste à tester
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: synchronisation de fichier   Aujourd'hui à 16:27

Revenir en haut Aller en bas
 
synchronisation de fichier
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» fichier Thunderbird Document
» faire une copie du fichier de la license de SZ ?
» fichier swf
» Fichier endommager
» inserer un fichier swf

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
AutoIt Français :: AutoIt v3 :: Entraide-
Sauter vers: