powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обновление программы через сеть
19 сообщений из 19, страница 1 из 1
Обновление программы через сеть
    #39669897
delphinub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Прошу помощи в решении проблемы. Реализовываю загрузку обновлений через интернет.
В данный момент пользуюсь этой функцией

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
function GetInetFile(const fileURL, FileName: String): boolean;
var
  hSession, hURL: HInternet;
  Buffer: array[1..1024] of Byte;
  BufferLen: DWORD;
  f: File;
  sAppName: String;
begin
  Result:=false;
  sAppName:=ExtractFileName(Application.ExeName);
  hSession:=InternetOpen(PChar(sAppName),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
  try
    hURL:=InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
    try
      AssignFile(f,FileName);
      ReWrite(f,1);
      repeat
        InternetReadFile(hURL,@Buffer,SizeOf(Buffer),BufferLen);
        BlockWrite(f,Buffer,BufferLen);
        Vers.ProgressBar1.Position:=Vers.ProgressBar1.Position+BufferLen;
        Application.ProcessMessages;
      until
        BufferLen = 0;
      CloseFile(f);
      Result:=True;
    finally
      InternetCloseHandle(hURL);
    end;
  finally
    InternetCloseHandle(hSession);
  end;
end;



и качаю

Код: pascal
1.
2.
if GetInetFile('http://tcprog.mcdir.ru/myprogram.exe',ExtractFilePath(Application.ExeName)+'/myprogram.exe') = true then
.....



так вот проблема в том, что файл качается старый. не обновленный. на сколько я могу судить ин берет его из кэша. Как только не пытался исправить, смотрел флаги запрета использовать кэш - ничего не помогает

Подскажите пожалуйста, как исправить этот код чтобы файл скачивался с сервера последний. Или, может быть, подскажите другую функцию.
Заранее благодарю
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39669907
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервер выставляет Cache-Control?

П.С. Можно еще генерить уникальный параметр ссылки что-то вроде ?123123
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39669908
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinub,

Используй DeleteUrlCacheEntry() перед загрузкой...
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39669915
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и не ходи по http
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39669954
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanСервер выставляет Cache-Control?

Ещё лучше спросить выставляет ли сервер корректный Last-Modified-Time, поскольку кэши
делают тоже не дураки и проверяют обновление файла на сервере.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39669957
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я делал через репликацию БД.
И софт и доки и данные (структуры)
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670017
delphinub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
а через что? долго мучайся не мог понять как это работает. В итоге взял просто хостинг на макхост и качаю с него файлы
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670019
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
05.07.2018 13:36, delphinub пишет:
> а через что?

httpS
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670315
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinub
Код: pascal
1.
hURL:=InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);



попробуй:
Код: pascal
1.
hURL:= InternetOpenUrl(hSession, PChar(fileURL), nil, 0, INTERNET_FLAG_RELOAD, 0);
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670321
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinubсмотрел флаги запрета использовать кэш - ничего не помогает
Не вижу я этих флагов в приведенном коде.
Как минимум должны быть в твоем случае INTERNET_FLAG_NO_CACHE_WRITE и INTERNET_FLAG_PRAGMA_NOCACHE.

И еще. Ты зря не любишь анализировать результат функций.
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670323
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockINTERNET_FLAG_NO_CACHE_WRITE и INTERNET_FLAG_PRAGMA_NOCACHEДа, и reload, выше сказали.
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670327
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphinub
Код: pascal
1.
'http://tcprog.mcdir.ru/myprogram.exe'

Можно заменить на такой урл:
'http://tcprog.mcdir.ru/myprogram.exe?rnd=1234567890'
где вместо цифр - любая строка из случайных латинских букв и цифр.
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670659
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftМожно заменить на такой урл:
' http://tcprog.mcdir.ru/myprogram.exe?rnd=1234567890'
Dimitry SibiryakovЕщё лучше спросить выставляет ли сервер корректный Last-Modified-Time, поскольку кэши делают тоже не дураки и проверяют обновление файла на сервере.
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670841
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_miksoftМожно заменить на такой урл:
' http://tcprog.mcdir.ru/myprogram.exe?rnd=1234567890%27]http://tcprog.mcdir.ru/myprogram.exe?rnd=1234567890%27] http://tcprog.mcdir.ru/myprogram.exe?rnd=1234567890'
Dimitry SibiryakovЕщё лучше спросить выставляет ли сервер корректный Last-Modified-Time, поскольку кэши делают тоже не дураки и проверяют обновление файла на сервере.Одно другому не мешает. Заголовки не всегда поддаются контролю, если это чужой хостинг.
А вот URL вполне поддается.
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670846
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

скачивать каждый раз файл, даже если он не изменился не айс
если совсем никак с заголовками, то как вариант положить рядом маленький файл с версией, хешем или еще каким то признаком что основной файл изменился
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670856
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгенийскачивать каждый раз файл, даже если он не изменился не айсЕсли это делать с разумной периодичностью, например, раз в неделю при количестве установок в пределах сотни, то ничего страшного.
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670913
Wolfpack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я обновлялки свои делал через Socket, для упрощения все собирал в zip-архив.

Сначала Socket серверу отправлял текущую версию, если на сервере другая, то отправлял zip через сокет и на стороне клиента разворачивал архив.

Есть небольшой геморрой с тем, чтобы проверить запущены ли приложения или dll сейчас, их надо закрыть или выгрузить перед обновлением.

А так есть у мелкософта целый готовый комплекс по обновлению ПО, правда сложный по настройке
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39670915
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
WolfpackЯ обновлялки свои делал через Socket, для упрощения все собирал в zip-архив.

Сначала Socket серверу отправлял текущую версию, если на сервере другая, то отправлял zip через сокет и на стороне клиента разворачивал архив.

Есть небольшой геморрой с тем, чтобы проверить запущены ли приложения или dll сейчас, их надо закрыть или выгрузить перед обновлением.

нет геморроя никакого.
То, что ты стартуешь, не является основной программой.
Это модуль-проверялка обновлений.
Она качает свежатинку и обновляет основной модуль и файлы.
А потом запускает основную программу.
...
Рейтинг: 0 / 0
Обновление программы через сеть
    #39671051
wupdate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
https://www.tmssoftware.com/site/wupdate.asp - а мне вот эту штуку посоветовали здесь в прошлом году. Вещь!!!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обновление программы через сеть
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]