Aptem |
Отправлено: 10.08.2004, 09:08 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Привет, ВСЕМ !!!
У меня такая проблема:
Есть приложение на C++Builder, которое находится на локальной машине. Суть его заключается в том, что оно грузит из файла какие-то данные, неважно какие... Так вот вопрос в том, что этот файл необходимо обновлять. Мне нужно, что бы при каждом запуске приложения, оно автоматически связывалось с сервером в Интернет и если файл на сервере более новый, чем на локальной машине, приложение обновляло бы свой старый файл!
Мне необходимо просто узнать механизм проверки файла на "обновленность" и механизм закачки его с сервера web!
Прошу помочь как можно скорее. ОГРОМНОЕ спасибо за внимание.
|
|
AVC |
Отправлено: 10.08.2004, 09:37 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Закачку с web не подскажу, а по поводу обновляемости использую в рамаках локальной сети следующий алгоритм (работаю с БД, поэтоме есть где хранить настройки способов обновлений для каждой станции):
1. Старт приложения
2. Коннект к БД
3. Проверка для данного компа где проверять обновления (на файл сервере, по ftp или прямо из базы)
4. Получение информации об эталонных файлах
5. Сравнение каталога приложения с эталонным набором
6. Если есть новые файлы или даты больше (не равны) эталону — нужен Upgrade
7. Формирование командной строки, запуск программы выполняющей обновление и останов основного процесса.
8. Приложение выполняющее Upgrade
8.1. Ожидание останова основного приложения.
8.2. Копирование или иным способом получение файлов эталона и запись их на локальную машину
8.3. Рестарт основного приложения.
go to 1. |
|
Aptem |
Отправлено: 10.08.2004, 14:04 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Как скачать файл с сервера я уже понял:
CODE |
NMHTTP1 -> InputFileMode = true;
NMHTTP1 -> Body = "catalogue.txt";
NMHTTP1 -> Get ( "http://www.mysite/catalogue.txt" );
|
Но вот как проверить файл на "обновленность"? Может сравнивать время создания файлов? Например, при каждом обновлении сохраняем дату создания файла на сервере, а затем проверяем это время.
Что думаете? Как проверить дату создания файла на сервере?
|
|
AVC |
Отправлено: 10.08.2004, 14:49 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Например:
Дата_Время_создания_файла = TDateTime(double(FileDateToDateTime(sr.Time)));
гда TSearchRec sr результат FindFirst/FindNext
или
TDateTime stime = FileDateToDateTime(FileAge(fspec));
Отредактировано AVC — 10/08/2004, 14:55 |
|
Gedeon |
Отправлено: 10.08.2004, 15:01 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Сравнивать надо не дату создания, а версию файла, м.б. разные приколы с датой, это 1, а второе, сначала скачали, а потом проверили? очень быстро и трафика не жалко? по любому где-то до закачки д.б. версия файла, где ее можно прочитать.
|
|
Guest |
Отправлено: 10.08.2004, 15:25 |
|
Не зарегистрирован
|
"Приколы с датой" имеют место быть (решаемые). Версию найти не смог. Сначала гружу описания, сравниваю, затем гружу требуемые файлы. Можно создать на сервере файл с номером версии и сначала читать его.
(avc) |
|
Aptem |
Отправлено: 11.08.2004, 06:22 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Всем спасибо за ответы...
Если файл сначала загрузить с сервера, то дата его создания устанавливается дате его скачки и проверять уже нет смысла. Если хранить постоянно где-то в другом файле версию, то при очередном обновлении можно просто забыть обновить файл с версией и приложение не обновится!
|
|
Guest |
Отправлено: 11.08.2004, 08:42 |
|
Не зарегистрирован
|
Что бы не забывать обновлять файл с версией этот процесс обязательно должен быть автоматизирован. |
|
Aptem |
Отправлено: 11.08.2004, 08:58 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
QUOTE (Guest @ 11/08/2004, 09:44) | Что бы не забывать обновлять файл с версией этот процесс обязательно должен быть автоматизирован. |
Ну это уже дебри web-программирования! Хотя наверное, так будет проще...
|
|
Guest |
Отправлено: 11.08.2004, 09:18 |
|
Не зарегистрирован
|
Почему Web? Его можно готовить у вас перед выкладыванием на Web сервер. Кроме версии в нем можно хранить описания эталона поставки. Тогда закачиваем сначала его, находим какие компоненты надо поменять и качаем только их. |
|
MDM |
Отправлено: 12.08.2004, 08:51 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
QUOTE (Aptem @ 10/08/2004, 15:06) | Как скачать файл с сервера я уже понял:
CODE |
NMHTTP1 -> InputFileMode = true;
NMHTTP1 -> Body = "catalogue.txt";
NMHTTP1 -> Get ( "http://www.mysite/catalogue.txt" );
|
Но вот как проверить файл на "обновленность"? Может сравнивать время создания файлов? Например, при каждом обновлении сохраняем дату создания файла на сервере, а затем проверяем это время.
Что думаете? Как проверить дату создания файла на сервере? |
Посмотри метод Head(). Может найдешь чего полезного...
|
|