Что нового

[Автоматизация] Автообновление программы по сети с сервера по Http

24itservice

Новичок
Сообщения
6
Репутация
0
Версия AutoIt: Любая 3.

Описание:
Требуется автоматическое обновление файлов исполняемой программы с сервера по http и автоматический уход на новый цикл в случае отсутствующего подключения к серверу.
Порядок действия:
1 ) Интервал выполнения 5 минут
2 ) Подключение к серверной машине
3 ) Скачивание контрольного файла в формате .txt
4) Сравнение файлов:
4.1 ) В случае совпадения новый цикл
4.2 ) В случае несоответствия скачивание файлов с новой версией и замена образца контрольного файла на машине
5 ) Команда на завершение работы программы и проверка завершен ли процесс
6 ) Удаление старых файлов
7 ) Замещение на новые файлы из скачанных с репозитория
8 ) Запуск программы
9 ) Уход на новый цикл


Примечания: Пробовал склепать свой вариант,но там и не смог справится с правильным подходом по циклу =( Если кому не сложно помочь буду чертовски рад готовому коду
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
#include <Crypt.au3>
While 1
	InetGet() ;скачиваем контрольный txt
	$old_file_hash = _Crypt_HashFile("путь к старому контрольному файлу", $CALG_SHA1) ;вычисляем хэши контрольных файлов
	$new_file_hash = _Crypt_HashFile("путь к новому контрольному файлу", $CALG_SHA1)
	If $old_file_hash<>$new_file_hash Then ;если файлы не одинаковые
		FileMove ("путь к новому контрольному файлу", "путь к старому контрольному файлу", 1) ;заменяем старый контрольный файл новым
		InetGet() ;скачиваем новые файлы обновляемого ПО, при необходимости разархивируем и пр.
		While ProcessExists() ;пока процесс существует
			ProcessClose() ;пытаемся его закрыть
			Sleep(10000)
		WEnd
		DirRemove() ;удаляем старую папку с ПО
		DirMove() ;копируем скачанную папку с новыми файлами ПО на место старой
		Run() ;запускаем ПО
	EndIf
	Sleep(300000) ;ждем 5 минут
WEnd
 
Верх