[R] AutoUpdate

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

[R] AutoUpdate

#1

Message par XenaMelody »

Bonjour,

Alors, je ne sais pas si cette demande à déjà été posté (je déteste le système de recherche et j'ai une connection à en vomir) mais serait-il possible de "AutoUpdater" son .exe (script qui téléchargera le .exe updaté automatiquement après confirmation de l'utilisateur) ?

Merci d'avance !
Modifié en dernier par XenaMelody le ven. 20 janv. 2012 00:30, modifié 1 fois.
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] AutoUpdate

#2

Message par silvere »

Bien sur Alors tu héberge un maj.txt avec la version de ton logiciel
Exemple : 1.1.0.0
Ensuite : Tu récupère la version grâce a la fonction

Code : Tout sélectionner

$version_en_ligne = _INetGetSource("http://www.exemple.fr/maj.txt")
Et après :
► Afficher le texte
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

Re: [..] AutoUpdate

#3

Message par XenaMelody »

D'accord merci mais encore une autre question :/ Comment je fait pour hébergé mon .exe ? Pas avec un hébergeur online du genre mediafire si ?
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
Avatar du membre
silvere
Niveau 8
Niveau 8
Messages : 532
Enregistré le : sam. 24 sept. 2011 22:56
Status : Hors ligne

Re: [..] AutoUpdate

#4

Message par silvere »

Nan, tu utilise un hébergeur normal, moi j'utilise sa, c'est gratuit il faut juste t'inscrire et après tu utilise un logiciel comme FileZilla pour mettre des fichier sur ton serveur
Quand le mensonge prend l'ascenseur, la vérité prend l'escalier. Elle met plus de temps, mais elle fini toujours par arriver.
Avatar du membre
XenaMelody
Niveau 4
Niveau 4
Messages : 67
Enregistré le : mar. 25 oct. 2011 00:45
Status : Hors ligne

Re: [..] AutoUpdate

#5

Message par XenaMelody »

D'accord, merci :D
XenaMelody
L'esprit sert à tout, mais il ne mène à rien.
Talleyrand
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [R] AutoUpdate

#6

Message par lesolutionneur »

Ça m'étonnerait que l'on puisse remplacer l'exe en cours d'exécution.

Si oui, je me suis vraiement cassé la tête mon système de maj: j'ai fait un logiciel qui ça temporairement dans le temp et qui executé avec des paramètres va telecharger la nouvelle version du soft puis lancer l'executable à la fin de la mise à jour.

J'ai fait aussi un système de changelog sur plusieurs lignes...

Ah oui, j'ai une question que je me suis toujours demandé :
Doit-on mettre des "" dans un fichier ini ou pas ?
Je m'explique: doit-on faire
menu=cassoulet, patates, choux
Ou alors
menu="cassoulet, patates, choux"

?

Merci !
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [R] AutoUpdate

#7

Message par GaRydelaMer »

Bonjour

J'ai écrit cette fonction pour la mise à jour de l'exe en cours d'utilisation:

avec le code précédent pour l'utiliser.

Le principe, on vérifie si il y a 1 mise à jour (Réseaux, Internet, ...), si oui on la télécharge dans Temp, comme tu peux pas remplacer le script en cours d’exécution on va le fermer, mais avant on créer un fichier Bat qui va faire la mise à jour dés que ton script est fermé.

De plus le dernier paramètre (True/False) permet de relancer ton appli après la mise à jour.

Code : Tout sélectionner

$version_en_ligne = _INetGetSource("http://www.exemple.fr/maj.txt")
$version_que_la_personne_a = "1.0.0.0"
If $version_que_la_personne_a < $version_en_ligne Then
    InetGet("http://www.exemple.fr/logiciel.exe", @TempDir & "\logiciel.exe", 1)    
    MsgBox(0,"","Mise a jour telecharger")
    _SelfUpdate(@TempDir & "\logiciel.exe", 2, "AutoItScript_SelfUpdate", True)
    Exit
Else
    MsgBox(0,"","Pas de mise a jour")
EndIf

Func _SelfUpdate($Source, $iDelay = 2, $FName = "AutoItScript_SelfUpdate", $Reload = True)
    Local $sCmdFile, $sFileName
    $sFileName = @TempDir & "\" & $FName & ".bat"
    FileDelete($sFileName)
    $sCmdFile = 'ping -n ' & $iDelay & ' 127.0.0.1 > nul' & @CRLF _
             & ':loop' & @CRLF _
             & 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
             & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
             & 'copy "' & $Source & '" "' & @ScriptDir & '"' & @CRLF
    If $Reload Then $sCmdFile &= @CRLF & '"' & @ScriptFullPath & '"' & @CRLF
    $sCmdFile &= 'del ' & $sFileName
    FileWrite($sFileName, $sCmdFile)
    Run($sFileName, @TempDir, @SW_HIDE)
EndFunc   ;==>_SelfUpdate
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [R] AutoUpdate

#8

Message par lesolutionneur »

Moi, j'ai fait en gros la même chose mais pas de bat mais un deuxième exe autoit qui s'occupe de décompresser...
Si j'ai un peu de temps, je l'extrairai de mon soft et le posterai ici.
Répondre