Page 1 sur 2

Téléchargement de logiciel en script

Posté : ven. 09 juin 2017 16:20
par Wiltech
Bonjour,
Je voulais savoir si c'était possible de créer un script qui permet de télécharger un logiciel via un site internet puis de vérifier dans le dossier où on l'aura téléchargé si ses biens la dernière version si ce n'est pas le cas le télécharger.

J'ai vu qu'il y avait la fonction "InetGet" mais je ne comprends pas comment m'en servir.

Merci à ceux qui m'aideront. :D

Re: Téléchargement de logiciel en script

Posté : ven. 09 juin 2017 16:56
par franco
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
++

Re: Téléchargement de logiciel en script

Posté : ven. 09 juin 2017 22:22
par Wiltech
Ces pas un mais plusieurs logiciel il y a:
-Phothofiltre
-Libreoffice
-Adobe reader dc
-7zip
-Chrome
-Firefox

Mais que veux tu dire par le code source ?

Re: Téléchargement de logiciel en script

Posté : ven. 09 juin 2017 22:33
par franco
Salut.
Mais que veux tu dire par le code source ?
Bah comme je te l'ai dit, ça permet de récupérer le lien proposé, quand ce lien n'est pas "fixe". Et donc la dernière version.

Tu viens de citer Photofiltre... Je suppose donc que tu parles de la version 7...

Le lien : http://static.infomaniak.ch/photofiltre ... -7.2.1.zip
(qui se trouve là-bas : http://www.photofiltre-studio.com/pf7.htm)

Tu constateras qu'il contient le numéro de version. - 7.2.1
En gros, si la version change, le lien également. Tu seras donc obligé de vérifier ton script et le modifier si la version change.

En passant par le code source pour récupérer le lien ACTUEL, tu es sur que le lien redirige vers la dernière version. Pas besoin de modifier ton script.

Note : peut-être qu'il existe une meilleure méthode plus simple. ^^

Demain, je vais essayer de faire le script pour télécharger photofiltre.



++

Re: Téléchargement de logiciel en script

Posté : ven. 09 juin 2017 22:39
par Wiltech
franco a écrit : ven. 09 juin 2017 22:33 Salut.


Bah comme je te l'ai dit, ça permet de récupérer le lien proposé, quand ce lien n'est pas "fixe". Et donc la dernière version.

Tu viens de citer Photofiltre... Je suppose donc que tu parles de la version 7...

Le lien : http://static.infomaniak.ch/photofiltre ... -7.2.1.zip
(qui se trouve là-bas : http://www.photofiltre-studio.com/pf7.htm)

Tu constateras qu'il contient le numéro de version. - 7.2.1
En gros, si la version change, le lien également. Tu seras donc obligé de vérifier ton script et le modifier si la version change.

En passant par le code source pour récupérer le lien ACTUEL, tu es sur que le lien redirige vers la dernière version. Pas besoin de modifier ton script.



++
Donc ce lien emmène directement vers le logiciel .

Et où le trouve-t-on ce lien (je suis débutant donc désoler si ma question peut paraître stupide)

Et merci pour ta réponse aussi rapide!!

Re: Téléchargement de logiciel en script

Posté : sam. 10 juin 2017 11:56
par walkson
moins rapide => code source => CTRL+u
            PhotoFiltre Studio X</i></font>.<br>
            <b><font face="Arial, Helvetica, sans-serif" size="3"><font color="#CC7700"><br>
            </font><font face="Arial, Helvetica, sans-serif" size="2"> <img src="images/floppy.gif" width="15" height="15">
            <a href="http://static.infomaniak.ch/photofiltre/utils/pf7/pf7-setup-fr-7.2.1.exe">PhotoFiltre
            7.2.1 / Version fran&ccedil;aise avec installeur (5 Mo)</a></font><br>
            </font></b><font face="Arial, Helvetica, sans-serif" size="2"> <br>
            </font><b><font face="Arial, Helvetica, sans-serif" size="3"><font face="Arial, Helvetica, sans-serif" size="2"><img src="images/floppy.gif" width="15" height="15">
            <a href="http://static.infomaniak.ch/photofiltre/utils/pf7/pf7-fr-7.2.1.zip">PhotoFiltre
            7.2.1 - Version fran&ccedil;aise au format zip (5.3 Mo)</a></font><br>
            </font></b><font face="Arial, Helvetica, sans-serif" size="2"> Version
            portable pour cl&eacute; USB</font><font face="Arial, Helvetica, sans-serif" size="2"><br>
            <br>

Re: Téléchargement de logiciel en script

Posté : sam. 10 juin 2017 21:38
par franco
Lu'.


Pour te montrer comment je fais pour récupérer le lien, je t'ai fait un script commenté.
#include <File.au3>
#include <Inet.au3>

$lien = "http://www.photofiltre-studio.com/pf7.htm"

; On remarque que les liens souhaités sont :
; 1. http://static.infomaniak.ch/photofiltre/utils/pf7/pf7-setup-fr-7.2.1.exe (version installable)
; 2. http://static.infomaniak.ch/photofiltre/utils/pf7/pf7-fr-7.2.1.zip (version portable)

; On remarque donc qu'on dispose de l'extension, soit .exe, soit .zip : Oui, ça va nous permettre d'isoler le lien souhaité.

; On récupère donc le code source.
$CS_PF = @DesktopDir & "\CS_Photofiltre.txt"
$CS = _INetGetSource($lien)
; On l'enregistre dans un fichier texte
$tmp = FileOpen($CS_PF,2)
FileWrite($tmp,$CS)
FileClose($tmp)
;~ ShellExecute($CS_PF)


; On ouvre le fichier pour voir où sont les fameux liens.
; On cherche dans le fichier soit avec .zip, soit avec .exe
; On utilise pour cela une boucle (for... to) et on recherche dans la ligne la présence de .exe (ou de .zip)
; Et si trouvé, on déclare la ligne dans une variable. La ligne contiendra le lien souhaité.

For $a = 1 to _FileCountLines($CS_PF)
   If StringInStr(FileReadLine($CS_PF,$a),".exe") then $lien_exe = FileReadLine($CS_PF,$a)
   If StringInStr(FileReadLine($CS_PF,$a),".zip") then $lien_zip = FileReadLine($CS_PF,$a)
Next
MsgBox(0,"",$lien_exe)
MsgBox(0,"",$lien_zip)

; Maintenant, ouvre le fichier à la recherche des liens (recherche avec .exe et/ou avec .zip)
; On a :             <a href="http://static.infomaniak.ch/photofiltre/utils/pf7/pf7-fr-7.2.1.zip">PhotoFiltre
; On a :             <a href="http://static.infomaniak.ch/photofiltre/utils/pf7/pf7-setup-fr-7.2.1.exe">PhotoFiltre

; Il faut donc récupérer UNIQUEMENT le lien.
; Tu constateras qu'il se trouve entre deux éléments :
; Elément 1 : <a href="
; Elément 2 : ">

; J'ai donc créé une fonction qui me permet cela (créé via mes recherches sur google).
; La fonction se trouve en fin  de script ( Func _FindBetweenString($Line, $char1, $char2) )

; On récupère le "lien executable .exe"
$Lien_executable = _FindBetweenString($lien_exe, '<a href="', '">')
MsgBox(0,"",$Lien_executable)

; On récupère le "lien portable .zip"
$Lien_portable = _FindBetweenString($lien_zip, '<a href="', '">')
MsgBox(0,"",$Lien_portable)

; ==========> Voilà, tu as le lien de téléchargement !!!!
; Pour info, parlons de la fonction que j'ai créé... Si je l'ai faite, c'est avant tout parce que je suis nul dans les regexp (les expressions régulières)
; si tu arrives à les faire, tu pourras aisément simplifier cette fonction !

Func _FindBetweenString($Line, $char1, $char2)
   $part1 = StringRegExpReplace($Line, "^.*" & $char1, "")
   $Term = StringRegExpReplace($part1, "\" & $char2 & ".*", "")
   Return SetExtended(1, $Term)
EndFunc   ;==>_FindBetweenString

D'ailleurs, il existe une autre façon de faire... Mais vu que tu débutes...
En tout cas, ça utilise les fonctions IE. ^^


++

Re: Téléchargement de logiciel en script

Posté : lun. 12 juin 2017 09:17
par Wiltech
Merci pour ton aide ! :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Je vais voir pour l'adapter au script que je veux faire.

Re: Téléchargement de logiciel en script

Posté : lun. 12 juin 2017 10:03
par Wiltech
J'ai un autre problème j'ai voulu l'adapter à libre office mais un problème se pose il me trouve 3 liens comment lui dire de prendre que le 1er par exemple ?
Et autre problème, je ne trouve pas le lien pour Chrome,Firefox,7zip,Adobe reader DC
Est-qu'il y a une solution ?

Re: Téléchargement de logiciel en script

Posté : lun. 12 juin 2017 16:25
par Wiltech
J'ai réussi pour 7zip et Firefox mais je n'arrive pas pour les autres

Re: Téléchargement de logiciel en script

Posté : lun. 12 juin 2017 18:51
par franco
Salut.
mais je n'arrive pas pour les autres
Tu peux nous donner tes scripts, afin de voir où tu coinces.

Et nous dire quels logiciels tu n'y arrives pas.


++

Re: Téléchargement de logiciel en script

Posté : mar. 13 juin 2017 08:37
par Wiltech
Je n'y arrive pour Chrome, libreoffice et Adobe reader DC
Quand je le télécharge pour Chrome et LibreOffice cela ne me le télécharge pas en entier(voir image)
Image
Voici un de mes scripts où je bloque :

Code : Tout sélectionner

#include <File.au3>
#include <Inet.au3>
#include <InetConstants.au3>
#include <MsgBoxConstants.au3>

$lien = "https://fr.libreoffice.org/download/libreoffice-stable/"
$CS_PF = @DesktopDir & "\Libreoffice.txt"
$CS_PFF = @DesktopDir & "\Libreoffice.msi"
$CS = _INetGetSource($lien)
$tmp = FileOpen($CS_PF,2)
FileWrite($tmp,$CS)
FileClose($tmp)

For $a = 1 to _FileCountLines($CS_PF)
        If StringInStr(FileReadLine($CS_PF,$a),"213 MB") then $lien_msi = FileReadLine($CS_PF,$a)
Next
MsgBox(0,"",$lien_msi)

$Lien_executable = _FindBetweenString($lien_msi, '<a class="btn-main" href="', '".')
MsgBox(0,"",$Lien_executable)

Func _FindBetweenString($Line, $char1, $char2)
        $part1 = StringRegExpReplace($Line, "^.*" & $char1, "")
        $Term = StringRegExpReplace($part1, "\" & $char2 & ".*", "")
        Return SetExtended(1, $Term)
EndFunc   ;==>Fonction crée _FindBetweenString

Downlad()

Func Downlad()

	InetGet($Lien_executable, $CS_PFF, 1, 0)

EndFunc

Re: Téléchargement de logiciel en script  

Posté : mer. 14 juin 2017 17:30
par franco
Salut.

Pour libre office... C'est normal.
Le lien récupéré n'est pas le lien de téléchargement direct...

Il pointe sur un autre lien, qui lui est le lien de téléchargement... ^.^

Solution : Récupérer à nouveau le code source du lien trouvé, pour ensuite récupérer le lien direct.

Comme ceci :
#include <File.au3>
#include <Inet.au3>
$lien_LO = "https://fr.libreoffice.org/download/libreoffice-stable/"
$cs = @DesktopDir & "\cs.txt"

; récupération cs #1
$cst = FileOpen($cs,2)
FileWrite($cst,_INetGetSource($lien_LO))
FileClose($cst)

; récupération lien #1
For $a = _FileCountLines($cs) to 1 step -1
   If StringInStr(FileReadLine($cs,$a),'_Win_x86.msi"') then $Lien_ex = _FindBetweenString(FileReadLine($cs,$a), '<p><a class="btn-main" href="', '" title=')
Next

; Le lien trouvé est un lien non final, qui redirige sur le lien final...
; Donc, avec le lien trouvé, il faut procéder une seconde fois à la récupération du code source de ce lien


; récupération cs #2
$cst = FileOpen($cs,2)
FileWrite($cst,_INetGetSource($Lien_ex))
FileClose($cst)

For $b = _FileCountLines($cs) to 1 step -1
   If StringInStr(FileReadLine($cs,$b),'_Win_x86.msi"') then $Lien_executable = _FindBetweenString(FileReadLine($cs,$b), 'url=', '"/>')
Next

MsgBox(0,"",$Lien_executable) ; ce lien est le lien final

$myDL = InetGet($Lien_executable, @DesktopDir & "\libreoffice.msi", 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.

MsgBox(0,"","Fini.") ; 218 Mo sur le DD. :P



Func _FindBetweenString($Line, $char1, $char2)
        $part1 = StringRegExpReplace($Line, "^.*" & $char1, "")
        $Term = StringRegExpReplace($part1, "\" & $char2 & ".*", "")
        Return SetExtended(1, $Term)
EndFunc   ;==>Fonction crée _FindBetweenString

++

Re: Téléchargement de logiciel en script

Posté : jeu. 15 juin 2017 15:03
par Wiltech
Serait-t-il possible que tu m'expliques ça en priver car j'ai encore des problèmes avec mon script.
Je pense que je dois pas comprendre une fonction car je n'arrive pas à réutiliser ton script.
Tu pourrais sur Skype ou sur Facebook ? .

Sinon ci tu ne peut pas tu pourrais m'aide pour le faire avec chrome car il a une demande avant le téléchargement et je sait pas comment faire
Image

Désoler d'abuser de ton temps. Mais merci beaucoup de m'aider ! :D :D :mrgreen: :mrgreen:

Re: Téléchargement de logiciel en script

Posté : ven. 16 juin 2017 16:32
par franco
Salut. ;)
Serait-t-il possible que tu m'expliques ça en priver car j'ai encore des problèmes avec mon script.
La réponse est non, car l'aide fournie peut servir à d'autres personnes. ;)
pour le faire avec chrome
J'avoue ne pas comprendre.
Quand on télécharge un fichier, ça le télécharge direct avec Inet, sans passer par le navigateur.

Que veux-tu faire avec Chrome ? Ouvrir le lien récupéré avec Chrome ?

Ton image est trop petite pour la voir. Déjà que j'ai une mauvaise vue lol.
Et n'affiche pas l'image, met juste le lien. C'est mieux. ^^


++

Re: Téléchargement de logiciel en script

Posté : ven. 16 juin 2017 18:02
par walkson
Serait-t-il possible que tu m'expliques ça en priver car j'ai encore des problèmes avec mon script.

La réponse est non, car l'aide fournie peut servir à d'autres personnes. ;)
Image

@Wiltech Un des principaux critères de la réussite, c'est la curiosité :D

Si vous téléchargez chrome, dans la page des téléchargements, clic droit sur chrome et "copier l'adresse du téléchargement"

Re: Téléchargement de logiciel en script

Posté : ven. 16 juin 2017 18:23
par franco
Salut.

Je viens de piger que tu voulais un lien direct pour chrome... :mrgreen:

J'ai jamais trouvé comme récupérer le lien direct pour google chrome sur le site officiel.
Et dans ce cas, je vais le trouver ailleurs.

Ici par exemple : http://www.pcastuces.com/logitheque/chrome.htm (t'as même droit à une version portable).

Ou alors, au lieu d'opter pour Chrome, tu optes pour chromium.
=> https://chromium.woolyss.com/download/fr/

++

Re: Téléchargement de logiciel en script

Posté : ven. 16 juin 2017 20:26
par walkson
@franco
Image
Image
Image
Image
Désolé de mon humour débordant mais je crois que l'adresse recherchée est
https://dl.google.com/tag/s/appguid%3D% ... eSetup.exe
en suivant mes dernières indications
Ou bien je n'ai rien compris....

Re: Téléchargement de logiciel en script

Posté : dim. 18 juin 2017 14:52
par franco
@walkson : Oui, et en espérant que le lien est un lien fixe, qui ne sera jamais modifié. :mrgreen:
Sinon, il sera obligé de modifier son script au moindre pet. :P

++

Re: Téléchargement de logiciel en script

Posté : lun. 19 juin 2017 01:35
par Tlem
Bonsoir messieurs.
Vite fait en passant, ce que vous téléchargez n'est pas le programme d'installation direct. C'est un installateur qui télécharge Chrome ...

Pour une version offline :
https://dl.google.com/update2/installer ... etup64.exe pour du 64 bits
ou
https://dl.google.com/update2/installer ... eSetup.exe pour du 32 bits

Liens obtenu à partir de celui-ci : https://support.google.com/chrome/answe ... ktop&hl=fr
Bon, après j'ai raboté un peu l'URL, mais bon, ça fonctionne. ^^

Pour Adobe Acrobat, je passe directement par le FTP : ftp://ftp.adobe.com/pub/adobe/reader/win/AcrobatDC/
Sachant que les dernières Full ne change pas tous les 4 matins, on peux partir sur ce lien ftp://ftp.adobe.com/pub/adobe/reader/wi ... _fr_FR.exe
Après il est possible de faire un script qui va récupérer la liste des dossier du premier lien, puis aller dans le dossier dont la valeur est la plus élevée et vérifier que dans le nom du fichier il n'y ai pas "Upd" sinon on va dans le dossier de valeur inférieur et on fait le même test ... ^^

Concernant Libre Office, même topo. En allant sur leur site, et en cliquant sur le lien "info" a droite de "Torrent", on obtient des tas de liens, dont celui-ci :
http://ftp.free.fr/mirrors/documentfoun ... ce/stable/
Après, même topo pour récupérer la dernière version => Dossier de valeur la plus élevée => win => Type x86 ou x64 => pour finir, le fichier .msi sans helppack ni sdk (en principe, c'est toujours celui du début de la liste) et en plus si on peux tester la taille, c'est le plus gros ...
Sinon si vous récupérez simplement le numéro de version soit a partir du FTP soit directement depuis le site principal, alors les liens sont :

Code : Tout sélectionner

http://ftp.free.fr/mirrors/documentfoundation.org/libreoffice/stable/x.x.x/win/x86/LibreOffice_x.x.x_Win_x86.msi
http://ftp.free.fr/mirrors/documentfoundation.org/libreoffice/stable/x.x.x/win/x86/LibreOffice_x.x.x_Win_x86_helppack_fr.msi

http://ftp.free.fr/mirrors/documentfoundation.org/libreoffice/stable/x.x.x/win/x86_64/LibreOffice_x.x.x_Win_x64.msi
http://ftp.free.fr/mirrors/documentfoundation.org/libreoffice/stable/x.x.x/win/x86_64/LibreOffice_x.x.x_Win_x64_helppack_fr.msi
Ou il suffit de remplacer x.x.x par le numéro de la dernière version. **


Voilà de quoi vous occuper. hihihi
Bonne nuit. ;)