Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];

Вниз

ИнтернетТемп в ХР   Найти похожие ветки 

 
nl2011   (2011-09-02 09:17) [0]

Здравствуйте. Пытался сделать некое подобие обновления программы через интернет, для собственной практики, и наткнулся на такую вещь: первые 2 файла через интернет с моего фтп скачивается нормально, а потом начинается косяк. Потому что, для того чтобы снова качать эти же файлы, программа решает не лесть в интернет, а скачать их из:
C:\Documents and Settings\User\Local Settings\Temporary Internet Files\Content.IE5\IMJFUVYQ\
И потом ничего не помогает убедить программу качать уже не оттуда а с ФТП. Что делать? Как сделать так, чтобы программа качала всегда с фтп?
Вот код как качаю:


function GetSize:string;
var
F: textfile;
s: string;
begin
 AssignFile(F, "\update\newsize.txt");
 Reset(F);
 Readln(f, s);
 CloseFile(F);
 Result := s;
end;

function GetInetFile(const fileURL, FileName: string): boolean;
const
 BufferSize = 1024;
var
 hSession, hURL: HInternet;
 Buffer: array[1..BufferSize] 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);
       Application.ProcessMessages();
       BlockWrite(f, Buffer, BufferLen);
       Application.ProcessMessages();
     until
     BufferLen = 0;
     CloseFile(f);
     Result := True;
   finally
     InternetCloseHandle(hURL);
   end;
 finally
   InternetCloseHandle(hSession);
 end;
end;

procedure TDBase.DownloadClick(Sender: TObject);
var
 s, FileOnNet, LocalFileName: string;
 F: textfile;
 i:longint;
begin
 AssignFile(F, pp+"update\size.txt");
 Reset(F);
 Readln(f,s);
 CloseFile(F);

 FileOnNet := "ftp://4.4.4.4/all/newsize.txt";
 LocalFileName := (pp+"\update\newsize.txt");

 if GetInetFile(FileOnNet, LocalFileName) = True then
      begin
       Application.ProcessMessages();

       if GetFileSize("\update\newsize.txt") = 0 then
       begin
        ShowMessage("Ошибка загрузки.");
        DeleteFile(pp+"\update\newsize.txt");
        exit;
       end;

          if s <> GetSize then
          case MessageDlg("Доступна для скачивания версия : "+GetSize+". Загрузить?", mtConfirmation, [mbyes, mbno], 0) of
           idyes:
             begin
               FileOnNet := "ftp://4.4.4.4/all/1.exe";
               LocalFileName := ("\update\1.exe");

               if GetInetFile(FileOnNet, LocalFileName) = True then
               ShowMessage("Загрузка завершена");
             end;
           end;

 end;

DeleteFile("\update\newsize.txt");
end;


Так вот первый раз файлы newsize.txt и 1.exe качаются с фтп, а все последующее время они качаются из :
C:\Documents and Settings\User\Local Settings\Temporary Internet Files\Content.IE5\IMJFUVYQ\
Притом что папка "IMJFUVYQ" - имеет рандомно генерируемое имя. И на некоторых машинах в нее вообще может быть запрещен доступ)
Помогите)


 
Anatoly Podgoretsky ©   (2011-09-02 10:13) [1]

> nl2011  (02.09.2011 09:17:00)  [0]

Ну так удали до закачки


 
nl2011   (2011-09-02 10:23) [2]

Anatoly Podgoretsky ©

> Ну так удали до закачки


Как я удалю до закачки если :
1) я не знаю в какую папку оно скачалось в начале
2) доступ на удаление может быть закрыт
?


 
nl2011   (2011-09-02 10:25) [3]

В смысле в моем оно туда качается а в другом может в какую нибудь С:\Temp
не сканировать же мне весь диск С в поисках 1.exe )


 
Anatoly Podgoretsky ©   (2011-09-02 10:34) [4]

Как это не знаешь, а

C:\Documents and Settings\User\Local Settings\Temporary Internet Files\Content.IE5

Очищать все подпапки, элементарнейшая задача, можно делать бат файлом, если ума недостаточно, но лучше FileOperations


 
nl2011   (2011-09-02 10:42) [5]



> Как это не знаешь...

То есть мне надо предварительно узнавать имя пользователя который сейчас активен в системе, потом искать учетную запись в C:\Documents and Settings\ или как его там, потом проверять есть ли там файл и удалять? или вообще учетки нету, или пути другие, например по русски написаны, или просто другие, то что делать? Или удаление запрещено?


 
QAZ   (2011-09-02 10:53) [6]

вообщето в функции которая у тебя используется туева куча флагов
включая ответственые за кэширование


 
Anatoly Podgoretsky ©   (2011-09-02 11:03) [7]

> nl2011  (02.09.2011 10:25:03)  [3]

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


 
nl2011   (2011-09-02 11:38) [8]


> Туда и больше нигде, это кеш эксплорера, достаточно очищить
> эту папку не
> отвекаясь на имена файлов.



procedure FindFile(Dir:String);
Var
   SR:TSearchRec;
   FindRes:Integer;
begin
FindRes:=FindFirst(Dir+"*.*",faAnyFile,SR);
While FindRes=0 do
  begin

     if ((SR.Attr and faDirectory)=faDirectory) and
     ((SR.Name=".")or(SR.Name="..")) then
        begin
           FindRes:=FindNext(SR);
           Continue;
        end;

     if ((SR.Attr and faDirectory)=faDirectory) then
        begin
           FindFile(Dir+SR.Name+"\");
           FindRes:=FindNext(SR);
           Continue;
        end;

     Application.ProcessMessages();

     if SR.Name = "MyDownload11111.exe" then
        FileOperation(Dir+SR.Name, "", FO_DELETE, FOF_ALLOWUNDO + FOF_NOCONFIRMATION);
     if SR.Name = "myndfsize.txt" then
        FileOperation(Dir+SR.Name, "", FO_DELETE, FOF_ALLOWUNDO + FOF_NOCONFIRMATION);

     FindRes:=FindNext(SR);
  end;

FindClose(SR);
end;


Ничего оттуда не удаляет. Он их даже не находит в этих системых суперскрытых подпапках, хотя они там есть.


> вообщето в функции которая у тебя используется туева куча
> флагов
> включая ответственые за кэширование


сделал:
InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, INTERNET_FLAG_PRAGMA_NOCACHE);
все равно кэшируются качаемые файлы...


 
QAZ   (2011-09-02 11:46) [9]


> InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, INTERNET_FLAG_PRAGMA_NOCACHE);
>  
> все равно кэшируются качаемые файлы...

как же тебе трудно жить то...
флаги в предпоследнем параметре


 
nl2011   (2011-09-02 11:54) [10]

Да мне трудно жить, посиди на работе с 38.2 посмотрим на твою внимательность)

Кстати,  
InternetOpenURL(hSession, PChar(fileURL), nil, 0, INTERNET_FLAG_PRAGMA_NOCACHE, 0);
при установленном флаге предпоследнем параметре - тоже кэшируется)


 
RWolf ©   (2011-09-02 12:05) [11]

Не нужно сидеть на работе с 38,2°. //К.О.
Флаг называется INTERNET_FLAG_RELOAD, загляните же в MSDN.


 
Anatoly Podgoretsky ©   (2011-09-02 12:07) [12]

> nl2011  (02.09.2011 11:38:08)  [8]

А что тут делают FindRes:=FindFirst(Dir+"*.*",faAnyFile,SR); и строки дальше
Тогда нафига FileOperation


 
~AQUARIUS~   (2011-09-02 12:15) [13]

InternetOpenUrl
INTERNET_FLAG_RELOAD
Forces a download of the requested file, object, or directory listing from the origin server, not from the cache.


 
nl2011   (2011-09-02 16:49) [14]

RWolf ©, ~AQUARIUS~
Спасибо большое)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1314552284
Gu
2011-08-28 21:24
2011.12.11
Dll


15-1313667310
Кто б сомневался
2011-08-18 15:35
2011.12.11
А на каких языках пишуться высокоресурсные 3D игры?


3-1268216193
Xmen
2010-03-10 13:16
2011.12.11
Экспорт из Excel в FireBird


15-1313578231
adigozelov
2011-08-17 14:50
2011.12.11
Delphi write and read to svn


2-1314109649
Сергей
2011-08-23 18:27
2011.12.11
Как перехватить исключение Ado?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский