Salut
En théorie, si tu télécharges directement le fichier avec inetget, c'est donc la dernière version.
Et oui, c'est possible.
Seule chose à prévoir :
s'il s'agit d'un lien fixe, tu peux
le télécharger directement sans souci, puisque le lien te fait télécharger la dernière version (avec Inetget)
Par contre, parfois, le lien (ou le nom du fichier) peut comporter des éléments dynamiques (qui changent), comme le numero de version etc...
Et là, la solution que j'ai adopté :
- Je
récupère le code source où se trouve le fichier à télécharger.
- Je fais en sorte de
récupérer le lien du téléchargement.
- J'ai donc le lien, je peux le télécharger.
Maintenant, quel est le logiciel que tu veux télécharger ?
Exemple avec un de mes scripts (tu verras, je l'ai réduit) :
Code : Tout sélectionner
#include <inet.au3>
#include <File.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
GUICreate("", 300, 20, -1, -1, $ws_popupwindow)
GUISetFont(8,400,0,"comic sans ms")
GUICtrlCreateLabel("Sizer",5,2.75,70,20)
GUISetState(@SW_SHOW)
$Progress = GUICtrlCreateProgress(80, 0, 220, 20, $PBS_MARQUEE)
GUICtrlSendMsg($Progress, 0x0400 + 10, 1, Number(30)) ; on envoie la barre de progressiob
$lien = "http://www.brianapps.net/sizer/"
$cs = "cs.txt"
$cst = FileOpen($cs,2)
FileWrite($cst,_INetGetSource($lien))
FileClose($cst)
For $a = 1 to _FileCountLines($cs)
If StringInStr(FileReadLine($cs,$a),".zip") then $Lien = FileReadLine($cs,$a)
Next
$char1 = '<a href="'
$char2 = '"'
FileDelete($cs)
$Lien = 'http://www.brianapps.net/sizer/' & _FindBetweenString($Lien, $char1, $char2)
$fichier = @DesktopDir & "\Sizer.zip"
FileDelete($fichier)
$myDL = InetGet($lien, $fichier, 1, 1)
Do
Sleep(250)
Until InetGetInfo($myDL, 2) ; Check if the download is complete.
Local $nBytes = InetGetInfo($myDL, 0)
InetClose($myDL) ; Close the handle to release resources.
Exit
Func _FindBetweenString($Line, $char1, $char2)
Local $part1 = StringRegExpReplace($Line, "^.*" & $char1, "")
Local $Term = StringRegExpReplace($part1, "\" & $char2 & ".*", "")
Return SetExtended(1, $Term)
EndFunc ;==>_FindBetweenString
++