Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление программы через интернет 
:(
    Опции темы
ShamanDeath
Дата 5.5.2008, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.4.2008

Репутация: нет
Всего: нет



Извините,если были похожие темы,но все равно есть некоторые вопросы.
Моя задача заключается в следующем:
Есть программа для которой нужно реализовать автоматическое обновление. Все файлы программы находятся на ФТП сервере в интернете. Программа содержит множество подпапок в своей структуре. Нужно сделать так,чтобы при запуске модуля обновления программа проверяла новые файлы,если таковы появились. Причем проверка должна быть по размеру файла и дате последнего изменения файла. Если же новые файлы есть,то модуль их качает и перемещает в указанную мной папку(это может быть любая произвольная папка).
Сложность заключается в проверке файлов. Т.е. я не знаю как организовать сбор данных о всех файлах и так чтобы это происходило быстро(файлов очень много), как сверить и скачать и переместить их в папку с программой,заменив старые.При этом база с файлами должна обновиться
Помогите пожалуйста. Ответы тут или ICQ 496232798

Добавлено через 7 минут и 28 секунд
Была даже мысль о клиент-серверной структуре,но опыта не хватает для реализации
PM MAIL   Вверх
Coder
Дата 5.5.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 5
Всего: 11



Нужно создать в корне ФТП сервера файл, где будут храниться даты и размер других файлов. Скачивать себе нужно этот файл и анализировать его - находить изменения. Потом качать только то что нужно.
PM MAIL   Вверх
Poseidon
Дата 5.5.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Coder @  5.5.2008,  09:58 Найти цитируемый пост)
Нужно создать в корне ФТП сервера файл, где будут храниться даты и размер других файлов. Скачивать себе нужно этот файл и анализировать его - находить изменения. Потом качать только то что нужно. 
Так, кстати, делают антивирусы при обновлении баз. А базы у них по несколько мегабайт, про этом качается совершенно не все. 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
ShamanDeath
Дата 5.5.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 5.4.2008

Репутация: нет
Всего: нет



 smile а можно, пожалуйста, пример для скачивания файла и для проверки двух списков?
PM MAIL   Вверх
SAVANE
Дата 5.5.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 20.7.2006
Где: Украина, Полтава

Репутация: нет
Всего: 1



Решал подобную задачу. Вот что я наваял. Там найдеш как вариант. Сори что не редактировал код ща времени нету. Если ниче не получится ПМ я подчистю код и добавлю коменты

Код


 if not InternetCheckConnection('http://www.ya.ru/', 1, 0) then
                begin
                RasTry:=RasTry+1;
                If RasTry=10 then stopmoment:=6;
                sCheckBox3.Checked:=true;
                Timer1.Interval:=5000;
                ConectedVia:=2;
                logevent[lognum].DataLog:=Date();
                logevent[lognum].TimeLog:=time();
                logevent[lognum].Ivent:='Starting conection RAS';
                LogNum:=LogNum+1;
                logevent[lognum].DataLog:=Date();
                logevent[lognum].TimeLog:=time();
                logevent[lognum].Ivent:=RasManager1.Name[0];
                LogNum:=LogNum+1;
                logevent[lognum].DataLog:=Date();
                logevent[lognum].TimeLog:=time();
                logevent[lognum].Ivent:=RasManager1.DeviceName[0];
                LogNum:=LogNum+1;
                logevent[lognum].DataLog:=Date();
                logevent[lognum].TimeLog:=time();
                logevent[lognum].Ivent:=RasManager1.PhoneNumber[0];
                LogNum:=LogNum+1;
                if RasManager1.Connected[0] then
                        begin
                        rasmanager1.DisConnect(0);
                        RasManager1.Connect(0);
                        end
                else RasManager1.Connect(0);
                logevent[lognum].DataLog:=Date();
                logevent[lognum].TimeLog:=time();
                logevent[lognum].Ivent:='Start RAS connection';
                LogNum:=LogNum+1;
                end
        else
                begin
                sCheckBox3.Checked:=true;
                sCheckBox4.Enabled:=false;
                logevent[lognum].DataLog:=Date();
                logevent[lognum].TimeLog:=time();
                logevent[lognum].Ivent:='Conecting via LAN';
                LogNum:=LogNum+1;
                ConectedVia:=1;
                stopmoment:=1;
                Timer1.Enabled:=true;
                label14.Caption:='100 Mb/s';
                end;
        end;
1:      Begin
        logevent[lognum].DataLog:=Date();
        logevent[lognum].TimeLog:=time();
        logevent[lognum].Ivent:='Connecting FTP Start';
        LogNum:=LogNum+1;
        NMFTP1.Connect
        end;
2:      Begin
        logevent[lognum].DataLog:=Date();
        logevent[lognum].TimeLog:=time();
        logevent[lognum].Ivent:='Davnload file update status';
        LogNum:=LogNum+1;
                try
                NMFTP1.ChangeDir(ProjectName);
                NMFTP1.ChangeDir(UpdateDir);
                NMFTP1.Download('Update.txt', 'C:\Update.txt');
                except
        trys:=trys+1;
        if trys=1 then browserstart(IndexFile);
        stopmoment:=2;
        abort;
        Timer1.Enabled:=true;
        end;
        logevent[lognum].DataLog:=Date();
        logevent[lognum].TimeLog:=time();
        logevent[lognum].Ivent:='Chek curent status';
        LogNum:=LogNum+1;
        assignfile(f,'C:\Update.txt');
        reset(f);
        readln(f,s);
        closefile(f);
        logevent[lognum].DataLog:=Date();
        logevent[lognum].TimeLog:=time();
        logevent[lognum].Ivent:='status Cheked';
        LogNum:=LogNum+1;
        now:=now+1;
        sCheckbox6.Checked:=true;
while strtoint(s)>=now do
        begin
                Statusbar1.Panels.Items[0].Text:='Dawnloading update list. Status 07.A1';
                        try
                        NMFTP1.ChangeDir(inttostr(now));
                        except
                        trys:=trys+1;
                        if trys=1 then browserstart(IndexFile);
                        stopmoment:=2;
                        abort;
                        end;
                NMFTP1.Download('Scenary.txt', 'c:\'+inttostr(now)+'.txt');
                Statusbar1.Panels.Items[0].Text:='Cheking updatelist. Status 08.A1';
                assignfile(f,'C:\'+inttostr(now)+'.txt');
                reset(f);
                while not EOF(f) do
                        begin
                        readln(f, tempstr);
                        Listbox1.Items.Add(tempstr);
                        s1:=tempstr[1];
                        proc:=strtoint(s1);
                                case proc of
                                1: DeleteFileU(tempstr);
                                2: DeleteDirU(tempstr);
                                3: CreateDirU(tempstr);
                                4: DawnloadFileU(tempstr);
                                //'5': StartBat(tempstr);
                                6: StartReg(tempstr);
                                //'7': StartExe(tempstr);
                                end;
                        now:=now+1;
                        end;
                closefile(f);
                Statusbar1.Panels.Items[0].Text:='Starting update. Status 09.A1';
                Statusbar1.Panels.Items[0].Text:='Update complite. Status 0B.A1';
                NMFTP1.Disconnect;
                end;
        //end;
        Statusbar1.Panels.Items[0].Text:='Curent status of udates is good. Status 05.A1';
        NMFTP1.Disconnect;
        Statusbar1.Panels.Items[0].Text:='Diskonected. Status 06.A1';
        browserstart(IndexFile);
        Statusbar1.Panels.Items[0].Text:='Starting Inform kiosk. Status 06.A1';
        form1.Close;
        end;
end;

--------------------
Be not afraid of growing slowly, be afraid only of standing still!
PM MAIL WWW ICQ   Вверх
sicher
Дата 25.7.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.7.2008

Репутация: нет
Всего: нет



Столкнулся с такой же проблемой
SAVANE, можно пожалуйста код с коментами
PM MAIL   Вверх
sicher
Дата 25.7.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.7.2008

Репутация: нет
Всего: нет



у меня совсем маленький опыт программирования, если можно, то покажите пример программы, которая автоматически обоновляется
как обновить примерно понимаю(хотел реализацию как у антивирусников), но реализацию кода не могу сделать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0731 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.