Batch Forum Index
RegisterSearchFAQMemberlistUsergroupsLog in
Reply to topic Page 1 of 1
Mise a jour automatique d'un programme
Author Message
Reply with quote
Post Mise a jour automatique d'un programme 
Salut,

Je n'arrive pas a faire marcher un script AutoIt pour mettre a jour automatiquement mon programme. Il s'agit de comparer la version de mon logiciel et le comparer sur un txt de mon ftp (ou il y a écrit la version la plus récente) et ainsi télécharger la nouvelle version si le script détecte que la version est antérieur.

Si quelqu'un si connait ou si il a mieux je suis preneur !

Merci.

Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <array.au3>
; ========================================
; Predefine variables
; ========================================
Global Const $s_Title = 'Telechargement de la Dernière Version'
Global Const $s_Version = '1.0.1.0'
Global Const $s_DatFile = 'http://asiawindows.fr/maj/asia.dat'
Global Const $b_Download_UpdateDat = 1
Global Const $s_DatFile_Local = @ScriptDir & '\au3_update.dat'
Global Const $s_Au3UpReg = 'HKEY_LOCAL_MACHINE\SOFTWARE\Asia\version' ; reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Asia" /v version /t REG_SZ /d 1.0.1.0 /f
Global $i_DownSize, $s_DownPath, $s_DownTemp, $s_DownFolder
Global $i_DatFileLoaded, $i_ValidAu3Path, $i_DnInitiated
Global $s_AutoUpdate, $i_SilentInstall
Global $s_CurrDate
Dim $s_ReleaseVer, $s_ReleaseFile, $i_ReleaseSize, $i_ReleaseDate, $s_ReleasePage

; ========================================
; Read registry settings
; ========================================
Global $s_DefDownDir = RegRead($s_Au3UpReg, 'DownloadDir')
If @error Then
    $s_DefDownDir = @DesktopDir
EndIf
Global $s_Au3Path = RegRead($s_Au3UpReg, 'InstallDir')
If Not @error And FileExists($s_Au3Path & '\Asia.exe') Then
    $s_CurrVer = RegRead($s_Au3UpReg, 'Version')
    $s_CurrDate = _FriendlyDate(FileGetTime($s_Au3Path & "\Asia.exe", 0, 1))
Else
    $s_Au3Path = "C:\Asia\Heart\asiamaj.exe"
    $s_CurrVer = '1.0.1.0'
    $s_CurrDate = 'Non disponible'
EndIf
; ========================================
; GUI - Main Application
; ========================================

Opt("GuiResizeMode", $GUI_DOCKALL)
$gui_Main = GUICreate($s_Title, 350, 310 + 20)
$me_Mn_Help = GUICtrlCreateMenu('&Menu')
$me_Mn_Proxy = GUICtrlCreateMenuItem('Utiliser une connexion avec &Proxy', $me_Mn_Help)
$me_Mn_VisitSite = GUICtrlCreateMenuItem('Aller sur le &Forum de http://asiawindows.fr', $me_Mn_Help)
$me_Mn_About = GUICtrlCreateMenuItem('&A Propos', $me_Mn_Help)
$lb_separator = GUICtrlCreateLabel('', 0, 0, 350, 2, $SS_SUNKEN)
$gr_Instal_Details = GUICtrlCreateGroup("Détails sur la Version Installée", 5, 5, 340, 70)
GUICtrlCreateLabel('Version Actuelle: ' & $s_CurrVer, 15, 25, 325, 15)
GUICtrlCreateLabel('Date: ' & $s_CurrDate, 15, 40, 325, 15)
GUICtrlCreateLabel("Répertoire d'installation: " & $s_Au3Path, 15, 55, 325, 15)
GUICtrlSetFont(-1, 8, 290, 2)
$gr_Mn_Release = GUICtrlCreateGroup("Dernière Version", 5, 85, 340, 60)
$lb_Mn_ReleaseVer = GUICtrlCreateLabel('Version: Chargement...', 15, 105, 145, 15)
$lb_Mn_ReleaseDate = GUICtrlCreateLabel('Date: Chargement...', 15, 120, 145, 15)
GUIStartGroup()
$ra_Mn_DoneNotify = GUICtrlCreateRadio('&Ne rien faire à la fin du Telechargement', 70, 155, 340, 15)
$ra_Mn_DoneRun = GUICtrlCreateRadio("&Lancer l'installation à la fin du Telechargement", 70, 175, 340, 15)
; Check default done option
If RegRead($s_Au3UpReg, 'DoneOption') = 'Run' Then
    GUICtrlSetState($ra_Mn_DoneRun, $GUI_CHECKED)
Else
    GUICtrlSetState($ra_Mn_DoneNotify, $GUI_CHECKED)
EndIf
$bt_Mn_Close = GUICtrlCreateButton('&Quitter', 10, 275, 330, 25)
; ========================================
; Control Set - Download Buttons
; ========================================
$bt_Mn_ReleaseDl = GUICtrlCreateButton('Télécharger la Dernière Version', 80, 195, 180, 30)
GUICtrlSetState(-1, $GUI_DISABLE)
$lb_Mn_ReleaseSize = GUICtrlCreateLabel('Taille: Chargement...', 100, 230, 165, 15, $SS_CENTER)
$lb_Mn_ReleasePage = GUICtrlCreateLabel('&Page de Telechargement', 100, 245, 165, 15, $SS_CENTER)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetFont(-1, 9, 400, 4)
GUICtrlSetColor(-1, 0x0000ff)
GUICtrlSetCursor(-1, 0)
$a_DownButtons = StringSplit($bt_Mn_ReleaseDl & '.' & $lb_Mn_ReleaseSize & '.' & $lb_Mn_ReleasePage, '.')

; ========================================
; Control Set - Download Display
; ========================================
$lb_Mn_DwnToTtl = GUICtrlCreateLabel('Installer dans:', 5, 195, 290, 15, $SS_LEFTNOWORDWRAP)
$lb_Mn_DwnToTxt = GUICtrlCreateLabel('', 5, 210, 290, 15, $SS_LEFTNOWORDWRAP)
$pg_Mn_Progress = GUICtrlCreateProgress(5, 225, 340, 20)
$lb_Mn_Progress = GUICtrlCreateLabel('', 5, 250, 290, 15)
$bt_Mn_OpenFile = GUICtrlCreateButton('&Ouvrir', 105, 275, 75, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
$bt_Mn_OpenFolder = GUICtrlCreateButton('Ouvrir &Répertoire', 185, 275, 75, 25)
GUICtrlSetState(-1, $GUI_DISABLE)
$a_DownDisplay = StringSplit($lb_Mn_DwnToTtl & '.' & _
        $lb_Mn_DwnToTxt & '.' & _
        $pg_Mn_Progress & '.' & _
        $lb_Mn_Progress & '.' & _
        $bt_Mn_OpenFile & '.' & _
        $bt_Mn_OpenFolder, '.')
_GuiCtrlGroupSetState($a_DownDisplay, $GUI_HIDE)
; ========================================
; GUI - About
; ========================================
$gui_About = GUICreate('A Propos', 400, 120, -1, -1, BitOR($WS_CAPTION, $WS_SYSMENU), -1, $gui_Main)
GUICtrlCreateLabel($s_Title & '<><> v' & $s_Version & ' - Utilitaire de téléchargement' & @LF & _
        @LF & _
        "Cette application est un utilitaire pour telecharger facilement" & _
        "la dernière Version de Asia." & _
        'Merci à Rob Saunders pour son aide dans le codage.', 5, 5, 390, 75)
$lb_Ab_VisitSite = GUICtrlCreateLabel("Visiter le forum", 5, 100, 145, 15)
GUICtrlSetFont(-1, 9, 400, 4)
GUICtrlSetColor(-1, 0x0000ff)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'http://asiawindows.fr')
$lb_Ab_ContactAuthor = GUICtrlCreateLabel("Demander de l'aide", 5, 100, 145, 15)
GUICtrlSetFont(-1, 9, 400, 4)
GUICtrlSetColor(-1, 0x0000ff)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, '******@gmail.com')
$bt_Ab_Close = GUICtrlCreateButton('&Quitter', 220, 90, 75, 25)
; ========================================
; Application start
; ========================================
GUISetState(@SW_SHOW, $gui_Main)
; Download update data file
If $b_Download_UpdateDat Then
    InetGet($s_DatFile, $s_DatFile_Local, 1)
Else
    FileCopy(@ScriptDir & '\update.dat', $s_DatFile_Local) ; to test locally
EndIf
; Harness GUI Events
While 1
    $a_GMsg = GUIGetMsg(1)
    If Not @InetGetActive And Not $i_DatFileLoaded Then
        If @InetGetBytesRead = -1 And $b_Download_UpdateDat Then
            $i_Res = MsgBox(5 + 16 + 8192, 'Erreur', 'Erreur de connexion au serveur.' & @LF & _
                    'Veuillez vérifier que:' & @LF & _
                    ' - Vous êtes bien connectés à Internet' & @LF & _
                    ' - Vous pouvez acceder  au forum http://asiawindows.fr' & @LF & _
                    " - Votre pare-feu ne bloque pas l'accès Internet à ce programme")
            If $i_Res = 4 Then
                InetGet($s_DatFile, $s_DatFile_Local, 1, 1)
            Else
                Exit
            EndIf
        Else
            _LoadUpdateData()
            $i_ReleaseSizeKB = Round($i_ReleaseSize / 1024)

            If _CompareVersions($s_ReleaseVer, $s_CurrVer) Then
                GUICtrlSetData($gr_Mn_Release, 'Dernière Version *New*')
                GUICtrlSetColor($gr_Mn_Release, 0x0000ff)
            EndIf
            GUICtrlSetData($lb_Mn_ReleaseVer, 'Version: ' & $s_ReleaseVer)
            GUICtrlSetData($lb_Mn_ReleaseDate, 'Date: ' & _FriendlyDate($i_ReleaseDate))
            GUICtrlSetData($lb_Mn_ReleaseSize, 'Taille: ' & $i_ReleaseSizeKB & ' KB')
            GUICtrlSetTip($lb_Mn_ReleasePage, $s_ReleasePage)
            GUICtrlSetState($bt_Mn_ReleaseDl, $GUI_ENABLE)
            GUICtrlSetState($lb_Mn_ReleasePage, $GUI_ENABLE)
            $i_DatFileLoaded = 1
        EndIf
    EndIf
    If $i_DnInitiated Then
        If @InetGetActive Then
            $i_DnPercent = Int(@InetGetBytesRead / $i_DownSize * 100)
            $s_DnBytes = Round(@InetGetBytesRead / 1024) & ' KB'
            $s_DnSize = Round($i_DownSize / 1024) & ' KB'
            GUICtrlSetData($pg_Mn_Progress, $i_DnPercent)
            GUICtrlSetData($lb_Mn_Progress, 'Progression: ' & $i_DnPercent & '% (' & $s_DnBytes & ' of ' & $s_DnSize & ')')
        Else
            GUICtrlSetData($pg_Mn_Progress, 100)
            If Not FileMove($s_DownTemp, $s_DownPath, 1) Then
                MsgBox(16 + 8192, 'Erreur', 'Erreur en déplacant le fichier.')
                GUICtrlSetData($lb_Mn_Progress, 'Erreur')
            Else
                If GUICtrlRead($ra_Mn_DoneRun) = $GUI_CHECKED Then
                    _Start('"' & $s_DownPath & '"')
                    Exit
                Else
                    GUICtrlSetData($lb_Mn_Progress, 'Telechargement Réussi!')
                    GUICtrlSetData($bt_Mn_Close, '&Quitter')
                    GUICtrlSetState($bt_Mn_OpenFile, $GUI_ENABLE)
                    GUICtrlSetState($bt_Mn_OpenFolder, $GUI_ENABLE)
                    $i_Response = MsgBox(4 + 64 + 256 + 8192, $s_Title, 'Telechargement Reussi!' & @LF & _
                            "Voulez vous lancer l'installation?")
                    If $i_Response = 6 Then
                        _Start('"' & $s_DownPath & '"')
                        Exit
                    EndIf
                EndIf
            EndIf
            $i_DnInitiated = 0
        EndIf
    EndIf
    If $a_GMsg[1] = $gui_Main Then
        Select
            ; Radio buttons
            Case $a_GMsg[0] = $ra_Mn_DoneRun
                RegWrite($s_Au3UpReg, 'DoneOption', 'REG_SZ', 'Run')
            Case $a_GMsg[0] = $ra_Mn_DoneNotify
                RegWrite($s_Au3UpReg, 'DoneOption', 'REG_SZ', 'Notify')
                ; Download buttons
            Case $a_GMsg[0] = $bt_Mn_ReleaseDl
                $tmp = StringInStr($s_ReleaseFile, '/', 0, -1)
                $s_DefFileName = StringTrimLeft($s_ReleaseFile, $tmp)
                $i_DownSize = $i_ReleaseSize
                _DownloadFile($s_ReleaseFile, 'Asia-setup.exe')

            Case $a_GMsg[0] = $lb_Mn_ReleasePage
                _Start($s_ReleasePage)

                ; Open buttons
            Case $a_GMsg[0] = $bt_Mn_OpenFile
                _Start('"' & $s_DownPath & '"')
                Exit
            Case $a_GMsg[0] = $bt_Mn_OpenFolder
                _Start('"' & EnvGet('windir') & '\explorer.exe" /select,"' & $s_DownPath & '"')
                Exit
                ; Menu items
            Case $a_GMsg[0] = $me_Mn_Proxy
                If BitAND(GUICtrlRead($me_Mn_Proxy), $GUI_CHECKED) = $GUI_CHECKED Then
                    GUICtrlSetState($me_Mn_Proxy, $GUI_UNCHECKED)
                    HttpSetProxy(0)
                Else
                    GUICtrlSetState($me_Mn_Proxy, $GUI_CHECKED)
                    HttpSetProxy(1)
                EndIf
            Case $a_GMsg[0] = $me_Mn_VisitSite
                _Start('http://www.asiawindows.fr')
            Case $a_GMsg[0] = $me_Mn_About
                GUISetState(@SW_SHOW, $gui_About)
                ; Close buttons
            Case $a_GMsg[0] = $bt_Mn_Close
                _CancelDownload()
            Case $a_GMsg[0] = $GUI_EVENT_CLOSE
                _CancelDownload(1)
        EndSelect
    ElseIf $a_GMsg[1] = $gui_About Then
        Select
            Case $a_GMsg[0] = $lb_Ab_VisitSite
                _Start('http://www.asiawindows.fr')
            Case $a_GMsg[0] = $lb_Ab_ContactAuthor
                _Start('"mailto:aide_developpeur@asiawindows.fr?Subject=Question à Propos du Téléchargement de Nouvelle Version"')
            Case $a_GMsg[0] = $GUI_EVENT_CLOSE Or $a_GMsg[0] = $bt_Ab_Close
                GUISetState(@SW_HIDE, $gui_About)
        EndSelect
    EndIf
WEnd


; ========================================
; Function Declarations
; ========================================
; App. specific functions
Func _DownloadFile($s_DownUrl, $s_DownName)
    $s_DownTemp = @TempDir & '\' & $s_DownName
   
    $len = InetGetSize($s_DownUrl)
    If @error Then
        MsgBox(16 + 8192, 'Erreur', "Impossible de commencer le Telechargement." & @CRLF & @CRLF & $s_DownUrl)
        Return
    EndIf
   
    InetGet($s_DownUrl, $s_DownTemp, 1, 1)
    $s_DownPath = FileSaveDialog('Enregistrer', $s_DefDownDir, 'Executables (*.exe)', 16, $s_DownName)
    If Not @error Then
        If Not (StringRight($s_DownPath, 4) = '.exe') Then
            $s_DownPath = $s_DownPath & '.exe'
        EndIf
        $tmp = StringInStr($s_DownPath, '\', 0, -1)
        $s_DownFolder = StringLeft($s_DownPath, $tmp)
        RegWrite($s_Au3UpReg, 'DownloadDir', 'REG_SZ', $s_DownFolder)
        GUICtrlSetData($lb_Mn_DwnToTxt, _ClipPath($s_DownPath, 55))
        GUICtrlSetData($lb_Mn_Progress, 'Progression du Telechargement: Calcul...')
        _GuiCtrlGroupSetState($a_DownButtons, $GUI_HIDE)
        _GuiCtrlGroupSetState($a_DownButtons, $GUI_DISABLE)
        _GuiCtrlGroupSetState($a_DownDisplay, $GUI_SHOW)

        GUICtrlSetData($bt_Mn_Close, 'Cancel')
        $i_DnInitiated = 1
    Else
        InetGet('Abort')
        FileDelete($s_DownTemp)
    EndIf
EndFunc   ;==>_DownloadFile


Func _CancelDownload($i_Flag = 0)
    If $i_DnInitiated Then
        $i_Response = MsgBox(4 + 64 + 256 + 8192, $s_Title, 'Mettre en Pause est Impossible.' & @LF & _
                'Votre téléchargement va être perdu.' & @LF & _
                'Continuer?')
        If $i_Response = 6 Then
            $i_DnInitiated = 0
            InetGet('abort')
            FileDelete($s_DownTemp)
            If $i_Flag = 1 Then
                Exit
            EndIf
            _GuiCtrlGroupSetState($a_DownDisplay, $GUI_HIDE)
            GUICtrlSetData($bt_Mn_Close, '&Quitter')
            If $s_PreBetaVer <> '' Then
                GUICtrlSetPos($bt_Mn_Close, 10, 275, 330 + 175, 25)
            Else
                GUICtrlSetPos($bt_Mn_Close, 10, 275, 330, 25)
            EndIf
            GUICtrlSetData($pg_Mn_Progress, 0)
            _GuiCtrlGroupSetState($a_DownButtons, $GUI_SHOW)
            _GuiCtrlGroupSetState($a_DownButtons, $GUI_ENABLE)
        EndIf
    Else
        Exit
    EndIf
EndFunc   ;==>_CancelDownload


Func _LoadUpdateData()
    Global $s_ReleaseVer, $s_ReleaseFile, $s_ReleasePage, $i_ReleaseSize, $i_ReleaseDate

    $s_ReleaseVer = IniRead($s_DatFile_Local, '1.0.1.0', 'version', 'Erreur de lecture')
    $s_ReleaseFile = IniRead($s_DatFile_Local, '**', 'setup', '')
    $s_ReleasePage = IniRead($s_DatFile_Local, 'Asia', 'index', 'http://asiawindows.fr/Asia/Asia.exe')
    $i_ReleaseSize = IniRead($s_DatFile_Local, '1033Ko', 'filesize', 0)
    $i_ReleaseDate = IniRead($s_DatFile_Local, '5', 'filetime', 0)
    FileDelete($s_DatFile_Local)
EndFunc   ;==>_LoadUpdateData


; Utility functions
Func _Start($s_StartPath)
    If @OSTYPE = 'WIN32_NT' Then
        $s_StartStr = @ComSpec & ' /c start "" '
    Else
        $s_StartStr = @ComSpec & ' /c start '
    EndIf
    Run($s_StartStr & $s_StartPath, '', @SW_HIDE)
EndFunc   ;==>_Start


Func _GuiCtrlGroupSetState(ByRef $a_GroupArray, $i_State)
    For $i = 1 To $a_GroupArray[0]
        GUICtrlSetState($a_GroupArray[$i], $i_State)
    Next
EndFunc   ;==>_GuiCtrlGroupSetState


Func _ClipPath($s_Path, $i_ClipLen)
    Local $i_Half, $s_Left, $s_Right
    If StringLen($s_Path) > $i_ClipLen Then
        $i_Half = Int($i_ClipLen / 2)
        $s_Left = StringLeft($s_Path, $i_Half)
        $s_Right = StringRight($s_Path, $i_Half)
        $s_Path = $s_Left & '...' & $s_Right
    EndIf
    Return $s_Path
EndFunc   ;==>_ClipPath


Func _NumSuffix($i_Num)
    Local $s_Num
    Switch Int($i_Num)
        Case 1, 21, 31
            $s_Num = Int($i_Num) & 'st'
        Case 2, 22
            $s_Num = Int($i_Num) & 'nd'
        Case 3, 23
            $s_Num = Int($i_Num) & 'rd'
        Case Else
            $s_Num = Int($i_Num) & 'th'
    EndSwitch
    Return $s_Num
EndFunc   ;==>_NumSuffix


Func _FriendlyDate($s_Date)
    Local $a_Months = StringSplit('Janvier,Fevrier,Mars,Avril,Mai,Juin,Juillet,Aout,Septembre,Octobre,Novembre,Decembre', ',')
    Local $s_Year, $s_Month, $s_Day
    $s_Year = StringLeft($s_Date, 4)
    $s_Month = StringMid($s_Date, 5, 2)
    $s_Month = $a_Months[Int(StringMid($s_Date, 5, 2))]
    $s_Day = StringMid($s_Date, 7, 2)
    $s_Day = _NumSuffix(StringMid($s_Date, 7, 2))
    Return $s_Month & ' ' & $s_Day & ', ' & $s_Year
EndFunc   ;==>_FriendlyDate


Func _StringInArray($a_Array, $s_String)
    Local $i_ArrayLen = UBound($a_Array) - 1
    For $i = 0 To $i_ArrayLen
        If $a_Array[$i] = $s_String Then
            Return $i
        EndIf
    Next
    SetError(1)
    Return 0
EndFunc   ;==>_StringInArray


Func _CompareVersions($s_Vers1, $s_Vers2, $i_ReturnFlag = 0)
    If $s_Vers1 = '' Then Return 0
    Local $i, $i_Vers1, $i_Vers2, $i_Top
    Local $a_Vers1 = StringSplit($s_Vers1, '.')
    Local $a_Vers2 = StringSplit($s_Vers2, '.')
    $i_Top = $a_Vers1[0]
    If $a_Vers1[0] < $a_Vers2[0] Then
        $i_Top = $a_Vers2[0]
    EndIf
    For $i = 1 To $i_Top
        $i_Vers1 = 0
        $i_Vers2 = 0
        If $i <= $a_Vers1[0] Then
            $i_Vers1 = Number($a_Vers1[$i])
        EndIf
        If $i <= $a_Vers2[0] Then
            $i_Vers2 = Number($a_Vers2[$i])
        EndIf
        If $i_Vers1 > $i_Vers2 Then
            $v_Return = 1
            ExitLoop
        ElseIf $i_Vers1 < $i_Vers2 Then
            $v_Return = 0
            ExitLoop
        Else
            $v_Return = -1
        EndIf
    Next
    If $i_ReturnFlag Then
        Select
            Case $v_Return = -1
                SetError(1)
                Return 0
            Case $v_Return = 1
                Return $s_Vers1
            Case $v_Return = 0
                Return $s_Vers2
        EndSelect
    ElseIf $v_Return = -1 Then
        SetError(1)
        Return 0
    Else
        Return $v_Return
    EndIf
EndFunc   ;==>_CompareVersions


Func _Status($s_MainText, $s_SubText = '', $i_BytesRead = -1, $i_DownSize = -1)
    Global $i_ProgOn
    Global $i_StatusPercent
    If @OSVersion = "WIN_XP" Or @OSVersion = "WIN_2000" Or @OSVersion = "WIN_2003" Then
        If $s_SubText <> '' Then
            $s_SubText = @LF & $s_SubText
        EndIf
        If $i_BytesRead = -1 Then
            TrayTip($s_Title, $s_MainText & $s_SubText, 10, 16)
        Else
            $s_DownStatus = Round($i_BytesRead / 1024) & ' of ' & Round($i_DownSize / 1024) & ' KB'
            TrayTip($s_Title, $s_MainText & $s_SubText & @LF & $s_DownStatus, 10, 16)
        EndIf
    Else
        If Not $i_ProgOn Then
            ProgressOn($s_Title, $s_MainText, $s_SubText, -1, -1, 2 + 16)
            $i_ProgOn = 1
        Else
            If $i_BytesRead = -1 Then
                ProgressSet($i_StatusPercent, $s_SubText, $s_MainText)
            Else
                $s_DownStatus = 'Downloading ' & Round($i_BytesRead / 1024) & ' of ' & Round($i_DownSize / 1024) & ' KB'
                $i_StatusPercent = Round($i_BytesRead / $i_DownSize * 100)
                ProgressSet($i_StatusPercent, $s_DownStatus, $s_MainText)
            EndIf
        EndIf
    EndIf
EndFunc   ;==>_Status




Visit poster’s website
Post Publicité 
PublicitéSupprimer les publicités ?


Reply with quote
Post Mise a jour automatique d'un programme 
Salut Mr. Green

Voici un petit script qui permet de tester si le programme est à jour ou pas :
(N'oublie pas de modifier les variables dans la fonction getCurrentVersion, tu dois mettre le nom du fichier, l'adresse du serveur, etc...)
Code:
#include <FTPEx.au3>

$Version = "0.0.1"

$r = getCurrentVersion()
if IsNumber($r) Then
   ; Problem with the remore server
else
   ; Success to get the file
   if $r <> $Version Then
     ; Put the update Code here
     MsgBox(0, "Update", "An Update is Available!")
   else
     MsgBox(0, "Update", "You Have the Last Version!")
   endif
endif

; #FUNCTION# ====================================================================================================================
; Author ........: Flammrock
; Modified.......:
; ===============================================================================================================================
Func getCurrentVersion()
   ; Main Variable
   $server = '127.0.0.1'
   $username = 'Anonymous'
   $pass = ''
   $filename = 'salut.txt'


   $Open = _FTP_Open('MyFTP Control')
   $Conn = _FTP_Connect($Open, $server, $username, $pass)
   If @error Then
     msgbox(0, "Error", "Unable to connect to the remote Server..")
     return 1
   endif
   $File = _FTP_FileOpen($Conn, $filename)
   If @error Then
     msgbox(0, "Error", "Unable to open the file..")
     return 1
   endif
   $Content = _FTP_FileRead($File,10000)
   If @error Then
     msgbox(0, "Error", "Unable to read the file..")
     return 1
   endif
   $STR = BinaryToString($Content)
   _FTP_FileClose($File)
   _FTP_Close($Open)
   return $STR
EndFunc


Si le programme n'est pas à jour, il suffit de télécharger le nouveau programme est de le remplacer (si tu as besoin d'aide je suis là)




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visit poster’s website
Reply with quote
Post Mise a jour automatique d'un programme 
Merci de ton aide Flammrock !

Je ne comprend pas ces lignes de code :
Code:
Func getCurrentVersion()
   ; Main Variable
   $server = '127.0.0.1'
   $username = 'Anonymous'
   $pass = ''
   $filename = 'salut.txt



Sachant que on peut mettre un lien, du genre https://asiawindows.fr/maj/asia.dat sans a avoir trifouillé le server, password etc...

Et sinon je suis preneur pour télécharger ensuite le nouveau programme et le remplacer si tu a des idées !

Merci beaucoup.



Visit poster’s website
Reply with quote
Post Mise a jour automatique d'un programme 
Code:
$server = '127.0.0.1'

Correspond à l'adresse IP du serveur, 127.0.0.1 correspond ici à l'ip local (tu peux aussi mettre un nom de domaine, sans le http:// ou le ftp:// bien sûr)


Code:
$username = 'Anonymous'

Correspond au nom de l'utilisateur (du compte que veux utiliser pour te connecter au serveur ftp, en gros le compte qui contient le fichier à télécharger)


Code:
$pass = ''

Correspond au mot de passe de l'utilisateur (du compte que veux utiliser pour te connecter au serveur ftp, en gros le compte qui contient le fichier à télécharger)


Code:
$filename = 'salut.txt'

Correspond au nom du fichier à récupérer


J'ai donné un code qui permet de checker s'il y a une maj via ftp car dans ton premier message tu parles de ftp :
Asia wrote:
Il s'agit de comparer la version de mon logiciel et le comparer sur un txt de mon ftp



Si tu veux faire ça via le http, la démarche reste assez similaire (le code se simplifie beaucoup) :
Code:
#include <INet.au3>

$Version = "0.0.1"

$r = getCurrentVersion()
if IsNumber($r) Then
   ; Problem with the remore server
else
   ; Success to get the file
   if $r <> $Version Then
     ; Put the update Code here
     MsgBox(0, "Update", "An Update is Available!")
   else
     MsgBox(0, "Update", "You Have the Last Version!")
   endif
endif

; #FUNCTION# ====================================================================================================================
; Author ........: Flammrock
; Modified.......:
; ===============================================================================================================================
Func getCurrentVersion()
   $HTMLSource = _INetGetSource('https://asiawindows.fr/maj/asia.dat')
   $Varversion = (StringSplit($HTMLSource, @LF))[2]
   $tmpversion = (StringSplit($Varversion, '='))[2]
   return $tmpversion
EndFunc


Attention à pas confondre ftp et http, c'est complètement différent




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visit poster’s website
Reply with quote
Post Mise a jour automatique d'un programme 
Je n'ai pas du tout confondu entre http et ftp Mort de Rire

Ce que je voulais dire c'est que via un lien http vers un .txt a l’intérieur de mon ftp ca me permettrait de ne pas a avoir écrire l'utilisateur et le mot de passe dans un fichier. Car même si il est ensuite compilé c'est pas super comme méthode.

Code:
[Asia.exe]
version=1.0.1.3
adresse=https://asiawindows.fr/Asia/Asia.exe


Par exemple ici il y a un .dat (.dat qui s'ouvre pour afficher un texte donc .txt mais peut importe). Il permet de définir la nouvelle version après chaque mise a jour afin que lorsque quelqu'un ouvre mon script, un code vérifie la version dans mon .dat a l'interieur de mon ftp mais sans a avoir ce connecter a mon ftp. Avec un simple lien http dans un script on peut récupérer les lignes écrites. Ensuite ça récupère la ligne du lien de téléchargement (https://asiawindows.fr/Asia/Asia.exe)
Donc ce que je voulais c’était si possible d'utiliser cette méthode afin de ne pas écrire mon id et mdp dans un script qui est utilisé par des gens que je ne connais pas.

Et sinon dans le script il y a le lien https://asiawindows.fr/maj/asia.dat pour afficher le texte pour ensuite récupérer les lignes.

Sauf que dans mon script que j'ai mis au tout début je ne comprend pas pourquoi ça ne marche pas. Ou peut être que ca marche bien que ca permet de correctement détecter la version mais ca ne remplace pas le programme par le nouveau.



Visit poster’s website
Reply with quote
Post Mise a jour automatique d'un programme 
Quelqu'un a des idées svp ?



Visit poster’s website
Post Mise a jour automatique d'un programme 


Display posts from previous:
Reply to topic Page 1 of 1
  



Index | Getting a forum | Free support forum | Free forums directory | Report a violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch