Автор Тема: [Интернет] Автообновление программы в нормальном и скрытом (в фоне) режимах  (Прочитано 23667 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн tukhvatullinrr [?]

  • Новичок
  • *
  • Сообщений: 1
  • Репутация: 0
    • Награды
Код: AutoIt [Выделить]
Func _AutoUpdate()
    $sTemp = _TempFile(@TempDir, '~', '.bat')
    $sPath = FileGetShortName(@ScriptFullPath)
    $sDir = FileGetShortName(@ScriptDir)
    $hFile = FileOpen($sTemp, 2)
    FileWriteLine($hFile, [email protected] off')
    FileWriteLine($hFile, ':loop')
    FileWriteLine($hFile, 'del ' & $sPath)
    FileWriteLine($hFile, 'if exist ' & $sPath & ' goto loop')
    FileWriteLine($hFile, ':go')
    FileWriteLine($hFile, 'rename ' & $sDir & '\y.exe 1.exe')
    FileWriteLine($hFile, 'if exist ' & $sDir & '\1.exe del ' & $sTemp& ' else goto go')
    FileClose($hFile)
    InetGet('http://уoursite/1.exe', $sDir & '\y.exe')
    Run($sTemp, '', @SW_HIDE)
EndFunc


Русское сообщество AutoIt


Оффлайн s0xen [?]

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: 0
    • Награды
Файл exe например с юкоза качается после подтверждения,можно не менять формат на "efe" как сказано выше а просто кидать новую версию в архив и потом на юкоз всё работает,проверенно.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7799
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
s0xen  [?]
Цитировать
просто кидать новую версию в архив
Ну ведь для этого нужен ещё и распаковщик.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн JIe0_NEED [?]

  • Новичок
  • *
  • Сообщений: 6
  • Репутация: 0
    • Награды
Извините, я что-то не понимаю... Должно быть 2 файла? А Update.au3 засунуть в Includes?

Совсем не разобрался... Объясните, пожалуйста!

Ссылка до файла версии: ссылка:http://SITE.ru/RAZDEL/Version/last.inf [nonactive]

Русское сообщество AutoIt


Оффлайн Isn [?]

  • Новичок
  • *
  • Сообщений: 119
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.10.2
А если на сервере требуется авторизация логин пароль, что нужно будет дописать?

Оффлайн leverage83 [?]

  • Новичок
  • *
  • Сообщений: 1
  • Репутация: 0
    • Награды
Доработал функцию автозамены при скачивании новой версии программы. Теперь когда версия скачалась, завершается выполнение скрипта прошлой версии, затем файл удаляется а на его место устанавливается новая версия программы с тем же именем. Затем происходит запуск новой версии скрипта.
Код: AutoIt [Выделить]
; Данная Функция скачивает новую версию программы, при этом отображая прогресс скачивания.
; По завершении скачивания программа завершается и запускается новая версия программы.
Func _DownloadNewVerion($Update_File)
    Local $Form_DownloadNewVersion, $Progress_Downloaded

    #Region ### START Koda GUI section ### Form=H:\AutoIT 3.3.0.0\Инструметы для AutoIt\koda_1.7.2.8_b247_2010-04-15\Forms\Form_download.kxf
    $Form_DownloadNewVersion = GUICreate("Скачивание новой версии...", 191, 26, -1, -1, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $Progress_Downloaded = GUICtrlCreateProgress(0, 0, 190, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    ; ------- Пингуем сервер. В случае неудачи, отображаем сообщение ---------
    ; ------- P.S. На пинг уходит меньше времени в случае, если инет выключен, ----
    ; ------- чем просто при использовании InetGet ---------------------------
    Local $host = StringRegExpReplace($Update_File,".+?//(.+?)/.+","$1")
    If not Ping($host,1000) Then
        GUIDelete($Form_DownloadNewVersion)
        MsgBox(16,"Ошибка","Не могу подключиться к серверу для скачивания новой версии программы!")
        Return
    EndIf
    ; -------------------------------------------------------------------------

    ; ---- Выводим сообщение, если файл, указанный в MyApp_Update.inf, не доступен -----
    Local $FileSize = InetGetSize($Update_File,1)
    If @error Then
        GUIDelete($Form_DownloadNewVersion)
        MsgBox(16,"Ошибка","На сервере не найден файл с новой версией программы!")
        Return
    EndIf
    ; -----------------------------------------------------------------------------------

    ; --------------------------------------- Скачиваем новую версию программы и затем её запускаем --------------------------------
    Local $FileName = StringRegExpReplace($Update_File,".+/(.+)","$1")
    Local $FileInTempDir = @TempDir & "\" & $FileName
    Local $FileInScriptDir = @ScriptDir & "\" & $FileName
      ;MsgBox(16,"Ошибка",@TempDir & "\" & $FileName)

    Local $hInet = InetGet($Update_File,$FileInTempDir,1,1)
    Do
        Sleep(20)
        GUICtrlSetData($Progress_Downloaded,InetGetInfo($hInet,0)/$FileSize*100)
    Until InetGetInfo($hInet,2)

    GUIDelete($Form_DownloadNewVersion)

    Local $DowloadSuccesfull = InetGetInfo($hInet,3)
    InetClose($hInet)

    If $DowloadSuccesfull Then
      $sTemp = $FileInTempDir & '.bat'
      $sPath = FileGetShortName(@ScriptFullPath)
      $sDir = FileGetShortName(@ScriptDir)
      $hFile = FileOpen($sTemp, 2)
      $newName = @ScriptDir & "\" & @ScriptName
      FileWriteLine($hFile, [email protected] off')
      FileWriteLine($hFile, ':loop')
      FileWriteLine($hFile, 'del "' & $sPath & '"')
      FileWriteLine($hFile, 'if exist "' & $sPath & '" goto loop')
      FileWriteLine($hFile, ':go')
      FileWriteLine($hFile, 'move /y "' & $FileInTempDir & '" "' & $newName & '"')
      FileWriteLine($hFile, 'if exist "' & $newName & '" start "" "' & $newName & '"')
      FileWriteLine($hFile, 'if exist "' & $newName & '" del "' & $sTemp& '" else goto go')
      FileClose($hFile)
      Run($sTemp, '', @SW_HIDE)
    Else
        MsgBox(16,"Ошибка","Не удалось скачать новую версию программы!" & @CRLF & "Возможно оборвалось интернет-соединение!")
    EndIf
    ;-------------------------------------------------------------------------------------------------------------------------------

    Exit
EndFunc


Оффлайн araneon [?]

  • Новичок
  • *
  • Сообщений: 59
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Подскажите а как быть если у меня только локалка, то есть нет Интернета в сети?
« Последнее редактирование: Сентябрь 10, 2013, 13:22:43 от araneon »
Нет ничего сложнее того, что выглядит и кажется простым

Оффлайн MnM [?]

  • SoSerious
  • Продвинутый
  • ***
  • Сообщений: 679
  • Репутация: 90
  • Пол: Мужской
  • Post-Hardcore
    • Награды
  • Версия AutoIt: 3.3.12.0
araneon, а как вы собрались скачивать что то из интернета если подключения к нему нет  :)

Русское сообщество AutoIt


Оффлайн araneon [?]

  • Новичок
  • *
  • Сообщений: 59
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
вот в том то и дело, что мне нужно тоже самое только локально.



Добавлено: Сентябрь 10, 2013, 17:35:39
Я так понимаю что для локальной сети нужно использовать FileGetVersion, FileCopy ?
« Последнее редактирование: Сентябрь 10, 2013, 17:35:39 от araneon, Причина: Объединение сообщений »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7799
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
MnM  [?]
Цитировать
как вы собрались скачивать что то из интернета если подключения к нему нет
Он же написал:
[?]
Цитировать
у меня только локалка

Скрипт в теме в принципе для локальной сети не заточен.
Нужно пропускать ту часть где файл скачивается, и читать сразу по указанному пути (\\comp-name\...).

Оффлайн WR-e-D [?]

  • Вредный
  • Новичок
  • *
  • Сообщений: 53
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
AdlibRegister("_CheckUpdate",20) - Иногда GUi успевает появляться в этот промежуток :)
Код: AutoIt [Выделить]
    ;-------------------------------------------------------------------------------------------

    $g_hInet_Update = InetGet($url,$g_TempFileInfo_Update,1,1)
    _CheckUpdate()
EndFunc

Func _CheckUpdate()
   $PCount=0
        Do
           Sleep(20)
           If $PCount > 500 Then
              Exit ;Return
           ElseIf InetGetInfo($g_hInet_Update,2) Then
              ExitLoop
              EndIf
                       $PCount+=1
        Until $PCount > 501 ;Проверяем 10 секунд  


Достаточно проблемно при двойном открытии exe и в тех случаях когда нужно при отмене обновления закрывать программу

Оффлайн Belfigor [?]

  • Локальный модератор
  • *
  • Сообщений: 3462
  • Репутация: 925
    • Награды
  • Версия AutoIt: 3.3.14.0
Не дает скачать, пишет "Вы не можете зайти в этот раздел" :(

Любые темы внутри раздела "Разработка ботов" не названные в соответствии с правилами раздела, будут закрываться.
Любой ответ, любого пользователя в теме с предупреждением, направленный на решение вопроса, произведенный до того как предупреждение было исправлено, приведет к закрытию темы и удалению всего что было после предупреждения.

Оффлайн Belfigor [?]

  • Локальный модератор
  • *
  • Сообщений: 3462
  • Репутация: 925
    • Награды
  • Версия AutoIt: 3.3.14.0
Восстановите кто-нибудь приложенный файл пожалуйста. Не дает скачать.


Добавлено: Июнь 23, 2015, 18:15:28
Кто-нибудь задавался вопросом использования при обновлении программы через фтп с помощью InetGet, ссылки типа:
Код: AutoIt [Выделить]
InetGet("ftp://webweb:[email protected]")

Безопаснее ли для этого использовать FTPEx? Не перехватят ли указанный в ссылке логин и пароль?
« Последнее редактирование: Июнь 23, 2015, 18:15:28 от Belfigor, Причина: Объединение сообщений »

Оффлайн qqww22 [?]

  • Новичок
  • *
  • Сообщений: 103
  • Репутация: 5
    • Награды
  • Версия AutoIt: 3.3.14.0
Восстановите кто-нибудь приложенный файл пожалуйста. Не дает скачать.


Добавлено: Июнь 23, 2015, 18:15:28
Кто-нибудь задавался вопросом использования при обновлении программы через фтп с помощью InetGet, ссылки типа:
Код: AutoIt [Выделить]
InetGet("ftp://webweb:[email protected]")

Безопаснее ли для этого использовать FTPEx? Не перехватят ли указанный в ссылке логин и пароль?
Точно не уверен,но скорее всего http снифер получит ссылку вместе с логином и паролем.

Оффлайн Black_Night [?]

  • Новичок
  • *
  • Сообщений: 67
  • Репутация: 1
    • Награды
Belfigor,
Однозначно перехватят. Через FTP обновляться плохо. Лучше простой HTTP.

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
4526 Просмотров
Последний ответ Октябрь 27, 2009, 18:04:32
от deepwood
3 Ответов
3734 Просмотров
Последний ответ Ноябрь 22, 2009, 18:45:11
от Medic84
0 Ответов
2521 Просмотров
Последний ответ Февраль 02, 2011, 14:12:38
от muskat_59
8 Ответов
13552 Просмотров
Последний ответ Март 28, 2012, 13:59:22
от C2H5OH
4 Ответов
2598 Просмотров
Последний ответ Май 29, 2012, 22:37:28
от lirikmel
4 Ответов
2317 Просмотров
Последний ответ Июнь 15, 2012, 11:56:19
от zybaskin
5 Ответов
3611 Просмотров
Последний ответ Ноябрь 09, 2012, 07:31:31
от Booster
3 Ответов
1363 Просмотров
Последний ответ Июль 19, 2014, 22:25:53
от CreatoR
7 Ответов
1874 Просмотров
Последний ответ Октябрь 15, 2015, 16:32:59
от Yashied
0 Ответов
542 Просмотров
Последний ответ Январь 24, 2017, 11:38:19
от nitsik