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

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

Оффлайн alex33 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1359
  • Репутация: 171
  • Пол: Мужской
    • alekssamos ВКонтакте
    • Награды
  • Версия AutoIt: 3.3.12.0
Belfigor,
Однозначно перехватят. Через FTP обновляться плохо. Лучше простой HTTP.
Да можно и через FTP, только сделать специально для этого доступ без пароля, например как это сделано у ftp://ftp.mozilla.org и у многих других проектов...

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


Оффлайн Belfigor [?]

  • Локальный модератор
  • *
  • Сообщений: 3482
  • Репутация: 926
    • Награды
  • Версия AutoIt: 3.3.14.0
О! А это мысля, создать на хостинге директорию и пользователя с правами только для чтения.
Хотяяя... У меня же этот пользователь и пароль сгенерированы только для обновлений. Надо главное папке приоритет "только чтение" задать.

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

Оффлайн Malderin [?]

  • Новичок
  • *
  • Сообщений: 55
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
При попытке скачать Update.au3 перекидывает на страницу с надписью "Вы не можете войти в этот раздел". Я что то не так делаю?

Онлайн ra4o [?]

  • Скриптер
  • ****
  • Сообщений: 649
  • Репутация: 106
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
это, наверное сверхсекретная UDF , тоже было несколько попыток скачать и всякий раз "Вы не можете войти в этот раздел" :'(

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


Оффлайн Malderin [?]

  • Новичок
  • *
  • Сообщений: 55
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Кто ищет тот всегда найдет. И хоть Update.au3 я так скачать и не смог, но на рубоарде все таки выдернул то что искал. Скрипт настолько понравился, что я переделал его под локальную сеть и внедрил в некоторые свои рабочие проекты.
Кому нужно под локалку но переделывать лень (хотя что там  переделывать все итак почти готово к употреблению), вот:
Код: AutoIt [Выделить]
#pragma compile(Out, D:\Папка с обновлением\Update.exe)
#pragma compile(FileVersion, 1.0.0.0)
#pragma compile(ProductVersion, 1.1.0.0)

#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <Array.au3>

Global $sAppUpdate_Page = "D:\Папка с обновлением\Update.inf"
Global $sApp_Version = "1.1"
Global $hGUI = 0

;Here we checking in quiet mode (only if new version available there will be a message).
_AppCheckUpdates_Proc($sAppUpdate_Page, $sApp_Version, 1)

#Region GUI Part
$hGUI = GUICreate("My Application", 300, 200)
$App_Ver = GUICtrlCreateLabel("Текущая версия " & $sApp_Version, 10, 20)
$CheckUpdates_Button = GUICtrlCreateButton("Проверить обновление", 150, 170, 140, 20)
$Exit_Button = GUICtrlCreateButton("Выход", 20, 170, 60, 20)

GUISetState(@SW_SHOW, $hGUI)
#EndRegion GUI Part

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $Exit_Button
            Exit
        Case $CheckUpdates_Button
            _AppCheckUpdates_Proc($sAppUpdate_Page, $sApp_Version)
    EndSwitch
WEnd

Func _AppCheckUpdates_Proc($sServer_Page, $sCurrent_AppVersion, $iMode=-1) ;$iMode <> -1 to check quitly

    Local $sUpdate_Version = IniRead($sServer_Page, "info", "Update Version", "")
    Local $sUpdate_File = IniRead($sServer_Page, "info", "Update File", "")

If @error=1 Then
        If $iMode = -1 Then MsgBox(48, "Update check", _
            StringFormat("Возникла ошибка (%i) при проверке обновления, пожалуйста, свяжитесь с автором.", 1), 0, $hGUI)
        Return SetError(1, 0, 0)
EndIf
    If _VersionCompare($sUpdate_Version, $sCurrent_AppVersion) = 1 Then
        Local $iUpdate_Ask = MsgBox(36, "Проверка обновления", _
            StringFormat("Доступна новая версия (%s).\n\nЖелаете обновить?", $sUpdate_Version), _
            0, $hGUI)

        If $iUpdate_Ask <> 6 Then Return 0

        Local $sScript_Name = StringTrimRight(@ScriptName, 4) & ".exe"
        Local $iInetGet = FileCopy($sUpdate_File, @TempDir & "\" & $sScript_Name, 1)

        Run(@ComSpec & ' /c Ping -n 2 localhost > nul & Move /y "' & _
            @TempDir & '\' & $sScript_Name & '" "' & @ScriptFullPath & '" & Start "" "' & @ScriptFullPath & '"', '', @SW_HIDE)

        Exit
    EndIf

    If $iMode = -1 Then MsgBox(48, "Проверка обновления", "Вы используете самую новую версию программы", 0, $hGUI)
    Return 1
EndFunc
 


Для этого примера я создал папку "Папка с обновлением" на диске D, туда поместил файл Update.inf следующего содержания:
[Info]
Update Version=1.1
Update File=D:\Папка с обновлением\Update 1.1.exe

Скомпилировал скрипт с параметром
Код: AutoIt [Выделить]
Global $sApp_Version = "1.1"

положил получмвшийся файл в папку "D:\Папка с обновлением\"

Далее скомпилировал скрипт с параметром
Код: AutoIt [Выделить]
Global $sApp_Version = "1.0"

Запихнул на рабочий стол, запустил и обновил его до версии 1.1.
« Последнее редактирование: Апрель 26, 2017, 08:38:44 от Malderin »

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


 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
4691 Просмотров
Последний ответ Октябрь 27, 2009, 18:04:32
от deepwood
0 Ответов
2615 Просмотров
Последний ответ Февраль 02, 2011, 14:12:38
от muskat_59
8 Ответов
13992 Просмотров
Последний ответ Март 28, 2012, 13:59:22
от C2H5OH
4 Ответов
2833 Просмотров
Последний ответ Май 29, 2012, 22:37:28
от lirikmel
4 Ответов
2475 Просмотров
Последний ответ Июнь 15, 2012, 11:56:19
от zybaskin
3 Ответов
1453 Просмотров
Последний ответ Июль 19, 2014, 22:25:53
от CreatoR
7 Ответов
2373 Просмотров
Последний ответ Октябрь 15, 2015, 16:32:59
от Yashied
0 Ответов
677 Просмотров
Последний ответ Январь 24, 2017, 11:38:19
от nitsik
4 Ответов
449 Просмотров
Последний ответ Июнь 04, 2017, 18:47:30
от musicstashall
3 Ответов
488 Просмотров
Последний ответ Август 03, 2017, 17:30:23
от Marjel