Page 1 sur 1
[R] MAJ automatique avec système de dezippage
Posté : lun. 02 sept. 2013 11:05
par DeadlyFrenzy
Bonjour,
J'aimerais un petit script autoit qui va chercher un fichier version dans un site.
Si la version est supérieur a la version que la personne a au lancement de celui ci une maj s’effectue automatiquement.
Et doit allez chercher un rar et tout extraire dans le dossier ou il se situe. (ou zip)
Si le fichier existe déjà il le supprime.
Si possible (j'ai bien dit si possible

) le version.txt doit être comme ça
Code : Tout sélectionner
Version 1 :
/download/MAJ1.rar
Version 2 :
/download/MAJ2.rar
Ou si c'est trop difficile comme ça
Mais bon c'est dommage de télécharger toutes les mis a jour ^^'
En espérant que ce n'est pas difficile
Bonne continuation !
Cordialement.
Re: [..] MAJ automatique avec système de dezippage
Posté : lun. 02 sept. 2013 23:07
par jguinch
Bon, c'est pas fini, mais voilà un début...
Il te faudra télécharger l'UDF 7zip que tu trouveras
ici, et placer les fichiers 7Zip.au3, 7-zip32.dll et 7-zip64.dll dans le même dossier que ton script.
Perso, j'ai eu un problème avec l'UDF 7Zip, j'ai du modifier _7ZipStartup pour forcer l'utilisation de la DLL 32 bits (
$hDLL_7ZIP = DllOpen($sNoCompiledPath & $sZip32Dll) )
► Afficher le texte
Code : Tout sélectionner
#include "7Zip.au3"
Global $sUpdateURL = "http://monsite.com"
Global $sUpdateFile = "update.cfg"
Global $iNewVersionNum = 0
Global $iNewVersionURL
Global $sDownloadedFile
Global $bProgressOn = True ; True = affiche la progression du téléchargement, sinon False
Global $iCurrentVersion = 1
If _checkNewVersion() Then
If MsgBox(36, "Mise à jour", "La version " & $iNewVersionNum & " est disponible." & @CRLF & @CRLF & "Voulez-vous effectuer la mise à jour maintenant ?") = 6 Then
If _downloadNewVersion() Then
; MsgBox(0, "", "La nouvelle version a été téléchargée correctement")
If _7ZipStartup() Then
$retResult = _7ZIPExtract(0, $sDownloadedFile, @ScriptDir & "\extract", 0, 0, 1 )
If @error = 0 Then
MsgBox(0, "", "Tous les fichiers ont été décompressés")
Else
MsgBox(16, "Echec de la mise à jour", "Une erreur est survenue lors de la mise à jour")
EndIf
Else
MsgBox(16, "Echec de la mise à jour", "Une erreur est survenue lors de la mise à jour")
EndIF
_7ZipShutdown()
EndIF
EndIf
EndIf
Func _downloadNewVersion()
$sDownloadedFile = @ScriptDir & "\" & StringRegExpReplace($iNewVersionURL, "(.*/)?(.+)", "$2")
Local $iInetGetBytesRead = 0
If $sDownloadedFile = "" Then Return 0
If FileExists($sDownloadedFile) Then FileDelete($sDownloadedFile)
$iInetSize = InetGetSize($sUpdateURL & "/" & $iNewVersionURL)
; Pour test : Local $iInetSize = InetGetSize("http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-docs-v3.3.9.19-src.zip")
If $bProgressOn Then ProgressOn ("Téléchargement en cours.", "Veuillez patienter...")
Local $hDownload = InetGet($sUpdateURL & "/" & $iNewVersionURL, "~", 1, 1)
; Pour test : Local $hDownload = InetGet("http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-docs-v3.3.9.19-src.zip", $sDownloadedFile, 1, 1)
While $iInetGetBytesRead < $iInetSize
$iInetGetBytesRead = InetGetInfo($hDownload, 0)
If $bProgressOn Then
$iPercent = Round($iInetGetBytesRead / $iInetSize * 100)
ProgressSet($iPercent, $iInetGetBytesRead & "/" & $iInetSize, $iPercent & "%")
If InetGetInfo($hDownload, 3) Then
ProgressOff()
Return 1
ElseIf InetGetInfo($hDownload, 4) Then
ProgressOff()
Return 0
EndIf
EndIf
Sleep(200)
WEnd
EndFunc
Func _checkNewVersion()
Local $sData = InetRead($sUpdateURL & "/" & $sUpdateFile)
; Pour test : Local $sData = FileRead(@ScriptDir & "\myUpdate.cfg")
If $sData = "" Then Return SetError(1, 0, 0)
Local $aData = StringRegExp($sData, "(?i)Version\s*(\d+)\s*:\R+(/.+?)(?:\R|\Z)+", 3)
If @error Then Return SetError(2, 0, 0)
If Mod(UBound($aData), 2) <> 0 Then Return SetError(2, 0, 0)
Local $aVersions[ UBound($aData) / 2 ][2]
For $i = 0 To UBound($aData) - 1 Step 2
If $aData[$i] > $iNewVersionNum Then
$iNewVersionNum = $aData[$i]
$iNewVersionURL = $aData[$i + 1]
EndIf
Next
If $iNewVersionNum > $iCurrentVersion AND $iNewVersionURL <> "" Then Return 1
Return 0
EndFunc
Re: [..] MAJ automatique avec système de dezippage
Posté : mar. 03 sept. 2013 11:50
par DeadlyFrenzy
Bonjour,
Merci infiniment pour tout cela !
Ce script marche non ?
Je ne voit pas ou je pourrais mettre une interface graphique dans ce script
Pouvez vous ajouter juste une fenêtre au hasard de taille quelconque pour que je puise modifié ?
Merci encore !
Re: [..] MAJ automatique avec système de dezippage
Posté : mar. 03 sept. 2013 13:33
par jguinch
En fait, il faudra que je comprenne un peu mieux ce dont tu as besoin. (c'est pour ça que j'ai écrit que "c'est pas fini")
Est-ce que la mise à jour concernera également le script (est-ce que le script devra se mettre à jour) ?
Pour l'interface graphique, elle pourra être créée dès la fin de la procédure de mise à jour.
Re: [..] MAJ automatique avec système de dezippage
Posté : sam. 07 sept. 2013 15:03
par DeadlyFrenzy
Non le script ne devras jamais se mettre a jour.
Juste placer les fichier du rar dans le dossier ou il est

Merci encore !
Cordialement
Re: [..] MAJ automatique avec système de dezippage
Posté : lun. 09 sept. 2013 22:14
par jguinch
Dans ce cas, mon script devrait fonctionner
Re: [..] MAJ automatique avec système de dezippage
Posté : mar. 10 sept. 2013 17:49
par DeadlyFrenzy
Bonjour,
Merci de votre réponse !
Comment je pourrais inclure dans ce script une form avec une petite progress bar ?
Pouvez vous me faire s'il vous plait une form au hasard avec une progress bar avec un emplacement au hasard ?
Je referais tout ça au propre moi même

Merci encore !
Re: [..] MAJ automatique avec système de dezippage
Posté : mer. 11 sept. 2013 21:13
par jguinch
Tu veux une barre de progression pour quoi : pour le téléchargement, ou le décompactage ?
Re: [..] MAJ automatique avec système de dezippage
Posté : sam. 14 sept. 2013 11:42
par DeadlyFrenzy
Les deux si possible :c
Dans un premier temps le Téléchargement et dans un deuxième le decompactage.
Encore une question.
Ce script télécharge le même rar a chaque fois ou est-ce qu'il peut différencier les mis a jour ?
Re: [..] MAJ automatique avec système de dezippage
Posté : lun. 16 sept. 2013 15:33
par jguinch
Si tu avais testé mon script, tu aurais vu que :
- il télécharge toujours le fichier qui correspond à la dernière version (conformément à ta demande dans le premier post)
- il y a déjà une barre de progression pour le téléchargement
Re: [..] MAJ automatique avec système de dezippage
Posté : mar. 17 sept. 2013 16:49
par DeadlyFrenzy
+>16:47:14 Starting AutoIt3Wrapper v.2.1.2.9 Environment(Language:040C Keyboard:0000040C OS:WIN_7/Service Pack 1 CPU:X64 OS:X64)
>Running AU3Check (1.54.22.0) from:C:\Program Files (x86)\AutoIt3
+>16:47:14 AU3Check ended.rc:0
>Running:(3.3.8.1):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\Deadly\Pictures\devoir\Nouveau AutoIt v3 Script.au3"
Il s'arrête au lancement :c.
Re: [..] MAJ automatique avec système de dezippage
Posté : mar. 17 sept. 2013 21:37
par jguinch
As-tu regardé et adapté le code ?
Les valeurs des variables $sUpdateURL et $sUpdateFile doivent correspondre respectivement à l'adresse du site et le fichier de version à télécharger (j'ai mis update.cfg, tu peux mettre version.txt si tu préfères).
Ensuite, le fichier de version doit contenir une structure qui correspond à celle énoncée dans ton premier post (avec un numéro de version et le chemin du fichier zip à télécharger).
Re: [..] MAJ automatique avec système de dezippage
Posté : mer. 18 sept. 2013 16:36
par DeadlyFrenzy
Marche parfaitement résolut et merci !