[Ex] Mise à jour programme

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 405
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

[Ex] Mise à jour programme

#1

Message par scorp84 »

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 :

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
 
- 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 :

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
 
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
Répondre