Netspirit писал(а):
В папке примеров в архиве компонента пример "Скачивание файлов.sha". Да я помню, что было, просто обновление было насколько знаю компонента, думал может порезали.
ContentLength - думал что-то типа длины строк ответа, не думал, что учитывает поток-данных, ну тут заблуждение мое короче виновато

Netspirit писал(а):
Проще написать PHP-скрипт, который будет перебирать каталог с файлами обновления и выдавать имя+дату изменения(+куда сохранять у клиента). Обновлятор получает список файлов и даты, сравнивает со своими. Если отличаются - скачивает файл, сохраняет и проставляет дату сохраненного файла согласно полученной с сервера.Ну в этом и вся соль, что вся программа это один .exe файл. Это не какой-то глобальный updater

Иными словами самообновление требуется. Не думаю что кто-то для экранной лупы какой-нибудь делает updater, у меня очень простая программка для работы с базой данных. Но программка рассчитана на очень большое кол-во пользователей. И требуется в случае чего, заставить их обновится, например при переезде на другой хостинг и т.д. ;)
Netspirit писал(а):
А можно извернуться - если файл занят, размещать новый файл возле него под другим именем. Программа перед стартом проверяет наличие этого другого файла, если есть - запускает его, а сама закрывается; этот другой файл в свою очередь при запуске копирует себя на место оригинальной программы.Изначально так и планировалось, но показалось, что .bat лучше ввиду того, что...
taskkill /f /im %1 - убиваем процесс основной программы.
del /q %1 - удаляем файл основной программы.
ren latest_version.exe %1 - переименовываем скаченную новую версию на имя старой.
del %0 ›nul - самоудаляем .bat файл.
То есть скачалось, md5 совпадает и все, выполняем .bat и получается с этой строчкой, как будто программа просто перезапустилась.