J'ai vu passer dernièrement des exemple de scripts pour faire une mise à jour des programmes.
Ces scripts étaient ultra complets avec gestion des versions mineures et majeures.
Pour ma part, j'avais juste besoin pour les scripts que je développe pour ma boîte de savoir si sur le poste client, il y avait la dernière version.
Voici comment cela fonctionne :
- Dans tous mes scripts, j'ai l'entête suivant qui me permet d'avoir une fois pour toute les infos du script :
Code : Tout sélectionner
$script_titre="TITRE DU SCRIPT"
$script_desc="Descriptif du script"
$auteur="Auteur"
$maj="jj/mm/aa" ; Année sur 2 chiffres
- A la fin de mon script, j'ai adapté la fonction selfdelete :
Code : Tout sélectionner
; MISE A JOUR
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; Récupère la version locale
$maj_version_locale=$maj
; Rècupère numéro de la version en ligne
$maj_url="\\192.168.1.x\Deploiement\Nom_script\"
$maj_fichier="version.txt"
If FileExists($maj_url & $maj_fichier)=1 Then
FileOpen($maj_url & $maj_fichier,0)
$maj_version_distante=FileReadLine($maj_url & $maj_fichier)
FileClose($maj_url & $maj_fichier)
EndIf
; Conversion des dates
$maj_version_locale="20" & StringMid($maj_version_locale,7,2) & "/" & StringMid($maj_version_locale,4,2) & "/" & StringMid($maj_version_locale,1,2)
$maj_version_distante="20" & StringMid($maj_version_distante,7,2) & "/" & StringMid($maj_version_distante,4,2) & "/" & StringMid($maj_version_distante,1,2)
$maj_nbj = _DateDiff( 'D',$maj_version_locale,$maj_version_distante)
;MsgBox(0,"test",$maj_version_locale & @LF & $maj_version_distante & @LF & $maj_nbj)
If ($maj_nbj<>0 And @Compiled) Then
FileCopy($maj_url & @ScriptName,@TempDir & "\" & @ScriptName & ".tmp")
FileDelete(@TempDir & "\Maj.bat")
$cmd_txt = 'ping -n 5 127.0.0.1 > nul' & @CRLF _
& ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
& 'if exist "' & @@ScriptFullPath & '" goto loop' & @CRLF _
& 'move "' & @TempDir & '\' & @ScriptName & '.tmp" "' & @ScriptDir & '\' & @ScriptName & '"' & @CRLF _
& 'del ' & @TempDir & '\Maj.bat'
FileWrite(@TempDir & "\Maj.bat", $cmd_txt)
Run(@TempDir & "\Maj.bat","", @SW_HIDE)
EndIf
; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

J'espère qu'il pourra être utile à d'autre.
Amicalement.
BM