[Ex] Mise à jour programme
Posté : mer. 28 avr. 2010 14:32
Bonjour,
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 :
- Sur le serveur dans le même répertoire où je mets mon exe, j'ai un fichier txt "version.txt" qui contient uniquement une date en jj/mm/aa (avec l'année sur 2 chiffres).
- A la fin de mon script, j'ai adapté la fonction selfdelete :
Il est sûrement perfectible (ne vous gênez pas
mais il fonctionne et permets de mettre en place une mise à jour simple.
J'espère qu'il pourra être utile à d'autre.
Amicalement.
BM
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