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

  • Май 20, 2012, 11:52:55 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:


Последняя финальная версия AutoIt: 3.3.8.1 (Скачать)
Последняя Beta версия AutoIt: 3.3.9.4 (Скачать)

Реклама

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

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

kzru_hunter [?]

  • Осваивающий
  • **
  • Репутация: 37
  • Offline Offline
  • Сообщений: 144
  • Версия AutoIt: 3.3.6.0
    • Награды
AutoIt: 3.3.6.0
Версия: 1.0

Категория: Автоматизация, Вспомогательные функции, Интернет

Описание:
Функция для проверки новой версии программы в интернете.
Старался её сделать так, чтобы в любых ситуациях (при включенном и выключенном интернете) были минимальные задержки при проверке последей версии программы.

Как работает функция:
Сначала функция скачивает файл информационный файл (к примеру, MyApp_Update.inf) с вашего сайта, в котором хранится информация о последней версии, а также ссылка для скачивания. Происходит сравнение текущей версии и последней. В случае обнаружения новой версии, выводится MessageBox: "Скачать новую версию? Да/Нет". Во время скачивания новой версии будет отображаться прогресс скачки, и после окончания скачивания будет запущена новая версия.

Функция может работать в 2-х режимах:
   1) В нормальном, т.е. при вызове функции будет в любом случае отображено сообщение либо о наличии последней версии либо о проблеме проверки последней версии.
В этом режиме функцию вызывать посредством ручного вызова в программе (например, при нажатии в меню или на кнопку).
   2) В тихом(скрытом), т.е. при вызове функции не будут появляться никакие сообщения в случае, если не удалось обнаружить новую версию. В этом режиме функцию нужно вызывать при запуске программы. При этом функция будет работать в фоне и не будет влиять на работу программы.


Использование функции:
Для того, чтобы проверить последнюю версию программы на своём сайте, нужно в коде скрипта вызывать функцию _StartCheckForUpdate($url_check, $Current_Version, $Silent_Mode = true)

Вот описание параметров:
1-й параметр ($url_check) - это ссылка на файл с информацией о последней версии, при этом этот файл должен иметь следующий вид (например):
[Info]
Update Version = 1.1
Update File = http://mysite.com/program-v1.1.exe
Update Changes = Исправлены баги
Замечание: Ключ "Update Changes" можно не указывать или оставить пустым

2-й параметр ($Current_Version): Тут нужно указать текущую версию программы в виде строки

3-й параметр ($Silent_Mode = True): Тут указывается, какой режим использовать: скрытый или нормальный. По умолчанию, скрытый

Код/Пример:
Код: AutoIt [Выделить]
#Include "Update.au3" ; обязательно нужно включить
$Current_Version = "1.0"
; -- Будет вызвана функция в скрытом режиме в фоне для проверки последней версии программы ---
_StartCheckForUpdate("http://mysite.com/MyApp_Update.inf",$Current_Version,True)
; При этом не забудьте залить на сайт файл MyApp_Update.inf, а также новую версию программы

Файл: Update.au3

Автор: hunter
Credits: Пример автообновления версии своего приложения by ViSiToR a.k.a CreatoR


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Январь 20, 2011, 00:33:13 от CreatoR »



  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
kzru_hunter
Неплохо сделано.

[?]
Цитата
Пример автообновления версии своего приложения by ViSiToR
a.k.a CreatoR :whistle: ещё было бы полезно добавить ссылку на оригинальный пример.




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


AutoIt is simple, subtle, elegant.



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


Мои работы

kzru_hunter [?]

  • Осваивающий
  • **

  • Автор темы
  • Репутация: 37
  • Offline Offline
  • Сообщений: 144
  • Версия AutoIt: 3.3.6.0
    • Награды
CreatoR Подправил  :)

Обновлён Update.au3: подправил некоторые недочёты
« Последнее редактирование: Май 06, 2010, 17:30:28 от kzru_hunter »



  Записан

dimart [?]

а можно сделать совсем без сообщений и запросов? то есть, если есть обновление, то скрипт закачивает новую версию и запускает её?  :think:
« Последнее редактирование: Март 23, 2011, 18:07:52 от dimart »



  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
dimart  [?]
Цитата
а можно сделать совсем без сообщений и запросов?
Можно.




  Записан

dimart [?]

А как? можно подробнее? Просто уже часа 3 никак не могу сделать, блин :(

OffTopic
Цитата
Можно.

Так и знал, что это ответят :)




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
dimart  [?]
Цитата
А как?
Нужно в коде покапаться (удалить MsgBox'ы, и упоминания о GUI*, хотя конекчно стоило бы сделать опцию для тихого обновления).




  Записан

dimart [?]

Я этим и занимался, но там всё так взаимосвязано, мне похоже на такое опыта общения с GUI не хватает.

Вот подредактировал, хотя бы ошибок больше не вылазит. Но он походу теперь не работает  ;D

проверьте пожалуйста, где ошибка? :)


« Последнее редактирование: Март 24, 2011, 06:55:38 от dimart »



  Записан

dimart [?]

Неужели никто не может помочь? :(




  Записан

Arei [?]

  • Продвинутый
  • ***
  • Репутация: 83
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 771
  • Версия AutoIt: 3.3.8.1
  • Награды Второе место конкурса
    • Награды
скрой окно обновления и всё.Что сложного?




  Записан

Prorok [?]

У меня проблема,кто может подскажите.(я просто новичек в этом деле)

I.я залил на сайт,а если быть точным на укоз 2 файла

1- MyApp_Update.inf с внутренним кодом

[Info]
 Update Version=1.1
 Update File=http://sait.ucoz.ru/razdel/прога.exe

2- файл прога.exe
II. Мой файл прога.exe ,который расположен на рб имеет внутрений код вида
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <Inet.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 193, 125)
$Pic1 = GUICtrlCreatePic("D:\foto\990415523.jpg", 0, 0, 609, 433)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <Inet.au3>
;
 
Global $sAppUpdate_Page = "http://sait.ucoz.ru/razdel/MyApp_Update.inf"
Global $sApp_Version = "1.0"
 
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)
 
$CheckUpdates_Button = GUICtrlCreateButton("Check Updates", 200, 170, 90, 20)
$Exit_Button = GUICtrlCreateButton("Exit", 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_Info = _INetGetSource($sServer_Page)
 
     If Not StringInStr($sUpdate_Info, "[Info]") Then
         If $iMode = -1 Then MsgBox(48, "Update check", _
             StringFormat("There was an error (%i) to check update, please contact with the author.", 1), 0, $hGUI)
 
         Return SetError(1, 0, 0)
     EndIf
 
     Local $sUpdate_Version = StringRegExpReplace($sUpdate_Info, "(?s)(?i).*Update Version=(.*?)(\r|\n).*", "\1")
     Local $sUpdate_File = StringRegExpReplace($sUpdate_Info, "(?s)(?i).*Update File=(.*?)(\r|\n).*", "\1")
 
     If _VersionCompare($sUpdate_Version, $sCurrent_AppVersion) = 1 Then
         Local $iUpdate_Ask = MsgBox(36, "Update check", _
             StringFormat("There is new version available (%s).\n\nWould you like to download the update?", $sUpdate_Version), _
             0, $hGUI)
 
         If $iUpdate_Ask <> 6 Then Return 0
 
         Local $sScript_Name = StringTrimRight(@ScriptName, 4) & ".efe"
 
         Local $iInetGet = InetGet($sUpdate_File, @TempDir & "\" & $sScript_Name)
 
         If @error Or Not $iInetGet Then
             If $iMode = -1 Then MsgBox(48, "Update check", _
                 StringFormat("There was an error (%i) to download the update, please contact with the author.", 2), 0, $hGUI)
 
             Return SetError(2, 0, 0)
         EndIf
 
         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, "Update check", "You are using the newest version of this software.", 0, $hGUI)
     Return 1
EndFunc


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd


В итоге : при запуске файла прога.exe с рабочего стола ,она предлагает обновиться на версию 1,1 и уже через секунду вылазиет ошибка что файл не той разрядности,хотя оба exe скомпилированы для х64 систем.Вообщем дело не в разрядности,а в чем то я допустил ошибку.Прошу подскажите новичку.
P.S. Извените за огромное сообщение




  Записан

iDisketka [?]

Привет всем.    Автор  а если можно пожалуста то опиши как создать этот инфформационный файл....в каком расширении итд. итп.   у меня при использовании твоей библиотеки и вышеприведённых примеров выскакивает ошибка (ошибка в файле содержащем информацию о новой версии программы)  хотя всё сделанно точно по гайду.
« Последнее редактирование: Июнь 03, 2011, 12:36:30 от iDisketka »



  Записан

rusreg79 [?]

  • Осваивающий
  • **
  • Репутация: 41
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 130
  • Версия AutoIt: 3.3.8.1
    • WWW
    • Награды
Создаешь новый текстовый документ и сохраняешь его, дописав в названии файла: .inf
Я например использую расширение txt а не inf, так удобнее редактировать файл прямо с сайта.





  Записан

iDisketka [?]

Вообщем я разобрался как всё работает ...библиотека работает на отлично.....но есть небольшая проблемка....тоесть даже очень огромная.      Дело в том что при запуски библиотеки...происходит проверка файла помещённого на любой сайт скачивание с которого не требует подтверждения  далее данные в файле сопоставляются с версией программы...
   И далее если версия программы ниже чем версия записанная в информационный файл то происходит скачивание новой версии которая по идее залита на тотже сайт....Так вот проблемма состоит в том
 если обновление программы в формате .exe залито на сервер скачивание с которого  требует подтверждения   либо скачивание .ехе файла требует подтверждения на закачку   пример Ucoz.ru
 ТО вместо скачивания новой обновлённой версии...происходит регистрация кода выскакивающей страници с формой подтверждения на закачку. тоесть сам .ехе файл не скачивается....
  Пример с Ucoz.ru  не единственный.
 Ну и естественно вопрос что можно с этим поделать...как можно изменить библиотеку? либо задать параметры чтоб вместо ехе файла можно было закачать на сайт файл в формате Rar  но чтоб библиотека была способна распаковать ево.




  Записан

CreatoR [?]

  • Администратор
  • *
  • *****
  • Репутация: 1399
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 5058
  • Версия AutoIt: 3.2.8.1+
  • AutoIt is simple, subtle, elegant
    • WWW
    • Награды
iDisketka  [?]
Цитата
вопрос что можно с этим поделать
Заливать не «file.exe» а «file.efe», и при скачиваний просто переименовывать файл.




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
[Данные, строки] Работа с файлом в фоне
AutoIt для новичков
deepwood 5 1360 Последний ответ Октябрь 27, 2009, 18:04:32
от deepwood
[Окна, Диалоги] Выполнение действий в скрытом окне
AutoIt для новичков
oneDmitry 3 1411 Последний ответ Ноябрь 22, 2009, 18:45:11
от Medic84
[Сеть, интернет] HTML таблицу засунуть в окно программы
AutoIt для новичков
oneDmitry 4 1083 Последний ответ Январь 25, 2010, 23:17:07
от Garrett
[Сеть, интернет] Переход по ссылке с параметром _blank в скрытом режиме
Стол заказов
muskat_59 0 646 Последний ответ Февраль 02, 2011, 14:12:38
от muskat_59
[Сеть, интернет] Обращение к базе mysql из программы
AutoIt для новичков
chydik 1 456 Последний ответ Сентябрь 23, 2011, 10:32:13
от XpycT
[Сеть, интернет] Как организовать онлайн сбор статистики использования программы?
AutoIt для новичков
ohos 3 395 Последний ответ Декабрь 04, 2011, 17:51:33
от Garrett
Маскировка звука навигации в скрытом IE
AutoIt для новичков
GenoTIP 34 1398 Последний ответ Февраль 08, 2012, 19:46:20
от Zaramot
[Автоматизация] Автоустановка в скрытом режиме.
Автоустановка приложений
Asshaker 2 393 Последний ответ Март 01, 2012, 17:02:22
от Asshaker
Перенесено: [Автоматизация] Автоустановка в скрытом режиме.
AutoIt для новичков
madmasles 0 131 Последний ответ Март 01, 2012, 17:19:47
от madmasles
[Grepolis]Нужен бот для автоматизации сбора ресурсов в фоне
Стол заказов
Wolf 8 729 Последний ответ Март 28, 2012, 13:59:22
от C2H5OH


Реклама

* Последние сообщения на форуме
post Проблема с циклами While
[AutoIt для новичков] Andeangl Сегодня в 11:03:15
post Уроки программирования и автоматизации посредством AutoIt для чайников
[AutoIt для новичков] aak Сегодня в 09:41:45
post Re: Как спарсить ссылку внутри тега "td" определенного класса
[Регулярные выражения и прочее] eropov Сегодня в 05:27:00
post Re: Ограничение доступа(блокировка) к компьютеру если не вставлен носитель с ключом
[AutoIt для новичков] Pat4005 Сегодня в 01:02:55
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Сегодня в 00:02:03
post Re: Развитие русской справки
[Инструменты и помощь по AutoIt] CreatoR Май 19, 2012, 23:55:37
post Узнать значение возвращаемое функцией javascript
[Автоматизация IE и Web-интерфейса] Viktor1703 Май 19, 2012, 23:25:05
post Re: Проверка запущенного процесса на удаленной машине
[AutoIt для новичков] sngr Май 19, 2012, 23:06:52
post Re: Проверка запущенного процесса на удаленной машине
[AutoIt для новичков] Dm666 Май 19, 2012, 22:38:13
post Re: Иконка AutoIt3 для разных Dock-ов
[Графика и творчество в рамках AutoIt] Ganibal95 Май 19, 2012, 22:21:35

* Пользователи онлайн
  • Dot Гостей: 77
  • Dot Скрыт: 0
  • Dot Пользователей: 21
  • Dot Пользователи Online: