Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 25.01.2012, 11:19   #1
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию Updater

Вощем надоело мне давать обновления вручную, решил сделать как положено.

может кто подсказать с чего начать или какуюнеть статейку?
Интересует :
где хранить файлы, как регистрировать сайт и че там писать как получать доступ к нему из по и узнавать версию.
Как скачивать соответственно и получать список обновленных компонентов.
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 25.01.2012, 14:22   #2
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

Один из вариантов http://programmersforum.ru/showthread.php?t=34131
__________________

В любом из нас спит гений. И с каждым днем все крепче.

Переходим на протокол нового поколения jabber
J-Fobos вне форума   Ответить с цитированием
Старый 25.01.2012, 15:25   #3
Пользователь
 
Аватар для Silent
 
Регистрация: 07.02.2011
Сообщений: 32
Сказал Спасибо: 8
Имеет 4 спасибок в 4 сообщенях
Silent пока неопределено
По умолчанию

Цитата:
Сообщение от J-Fobos Посмотреть сообщение
Один из вариантов http://programmersforum.ru/showthread.php?t=34131
Кроме работы с архивом по данной ссылке ничего путевого нету.
Небольшие замечания по данному примеру:
- Качать каждый раз архив со всеми файлами глупо т.к. в программе может обновится только библиотека так зачем же тогда качать еще ехе и другие библиотеки если они есть. В данном случае нужно скачивать только те файлы которые обновились.
- Отдельный апдетор для программы это на любителя, я делал всегда апдейт программ в самой программе. Дико раздражает на руофе этот долбанный зависатор который сам толком не может обновится и клиент игры тоже обновляет как Бог на душу послал, поэтому имхо программа которая обновляет сама себя намного интереснее и исключает некоторые глюки.

Последний раз редактировалось Silent, 25.01.2012 в 15:28.
Silent вне форума   Ответить с цитированием
Старый 25.01.2012, 15:43   #4
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от Silent Посмотреть сообщение
Кроме работы с архивом по данной ссылке ничего путевого нету.
Небольшие замечания по данному примеру:
- Качать каждый раз архив со всеми файлами глупо т.к. в программе может обновится только библиотека так зачем же тогда качать еще ехе и другие библиотеки если они есть. В данном случае нужно скачивать только те файлы которые обновились.
- Отдельный апдетор для программы это на любителя, я делал всегда апдейт программ в самой программе. Дико раздражает на руофе этот долбанный зависатор который сам толком не может обновится и клиент игры тоже обновляет как Бог на душу послал, поэтому имхо программа которая обновляет сама себя намного интереснее и исключает некоторые глюки.
идеальный алгоритм для меня это по принципу lameupdater.
Сверяем хеши наших файлов с хешами на сервере. Составляем список че обновить и качаем.

вот мне главное как запросить у серва список файлов с хешами и как скачать нужные
сжатие, хеширование и замену сделаю
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 25.01.2012, 17:15   #5
Пользователь
 
Регистрация: 08.05.2008
Сообщений: 61
Сказал Спасибо: 0
Имеет 21 спасибок в 12 сообщенях
Hint пока неопределено
По умолчанию

Генерируешь текстовый файл, содержащий следующую информацию о каждом файле:
1. Имя файла
2. Контрольная сумма файла (лучше md5)
3. Размер файла в сжатом виде

Загружаешь этот служебный файл на сайт. Сжимаешь отдельно каждый файл программы и тоже загружаешь на сайт.

Контрольную сумму надо считать от оригинального файла. Размер указывать от архива с файлом.

Программа загружает с сайта служебный файл, проверяет все файлы по списку на отличие контрольной суммы, суммирует размер сжатых версий для получения общего размера загрузки (исключительно для информирования пользователя и для отображения общего прогресса загрузки), загружает необходимые файлы и распаковывает их.
Hint вне форума   Ответить с цитированием
Старый 25.01.2012, 17:40   #6
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

хм. найти какуюнеть надежную компонетнты бы умеющую загружать файло и дающую возможность отслеживать прогресс.

то есть примеры на стандартных инди но как я понял они имеют ряд подводных камней и затупов.
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 25.01.2012, 17:43   #7
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

не компанента, но тоже норм - http://www.delphisources.ru/pages/fa...with_http.html
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.01.2012, 20:59   #8
Пользователь
 
Регистрация: 08.05.2008
Сообщений: 61
Сказал Спасибо: 0
Имеет 21 спасибок в 12 сообщенях
Hint пока неопределено
По умолчанию

idHTTP вполне себе удобный компонент.
Hint вне форума   Ответить с цитированием
Старый 25.01.2012, 21:35   #9
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

и мои пять копеек. файл большой получится. ну всмысле 5 килобайт это конечно не много, но не лучше ли вести учет номера версии. поясняю:
вышел релиз программы, на сайте лежит файлик "ver", с цифоркой 1.
программа при запуске качает этот файл и сравнивает со своей версией то есть 1.
сделал какой-то новый файл, на сайте правишь тот файлик пишешь 2. и выкладываешь сам файл и тот файл с хешами.
программа получает первый мизерный файл, видит что цифорка изменилась - льет файл с хешами, сраванивает, выбирает что скачать, качает файлы.

в моем случае, тот файл с номером весил несколько байт. его проще каждый раз проверять.
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 25.01.2012, 23:53   #10
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Код:
unit inntUtils;

interface

uses Wininet,Windows,sysutils,defineewa;

var
 WININETHANDLE : Pointer=nil;

type
 TInetLoadingCallback = function(progress : INT64):BOOL; stdcall;


function GetInetFile(const fileURL, FileName: string; ldc : TInetLoadingCallback): boolean;

implementation


function GetInetFile(const fileURL, FileName: string; ldc : TInetLoadingCallback): boolean;
const
  BufferSize = 1024;
var
  hURL: HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen: DWORD;
  f: file;
  sAppName: string;
  cmdl : array[0..511]of ansichar;
  posit : INT64;
  sz    : INT64;
  dwsz,dwreserved,ecode  : DWORD;
begin
  Result := False;
  GetModuleFileName(0,@cmdl,sizeof(cmdl));
  sAppName:=PAnsiChar(@cmdl);
  sAppName := ExtractFileName(sAppName);
  if WININETHANDLE=nil then WININETHANDLE:= InternetOpen(PChar(sAppName),
  INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if WININETHANDLE=nil then exit;
    hURL := InternetOpenURL(WININETHANDLE, PChar(fileURL), nil, 0, 0, 0);
    if hURL=nil then exit;  
    posit:=0;
    try
      AssignFile(f, FileName);
      Rewrite(f,1);
      repeat
        InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
        BlockWrite(f, Buffer, BufferLen);
        inc(posit,BufferLen);
        if assigned(ldc)then if not ldc(posit)then begin
          CloseFile(f);
          exit;
        end;
      until
        BufferLen = 0;
      CloseFile(f);
      Result := True;
    finally
      InternetCloseHandle(hURL);
    end;
end;

initialization

finalization
 InternetCloseHandle(WININETHANDLE);

end.
чуток подправил, впринципе нормально
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:21.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!