我制作了一个Delphi应用程序,它定期下载zipfile(update.zip)。在zip文件中有DLL和Exe。 zip文件被解压缩,DLL和Exes被复制到正确的文件夹。
我想知道的是如何知道客户端是否已经下载了zipfile,因此不必再次下载。因为它已经由客户处理。但是当zipfile的内容发生了变化时 它必须再次下载zipfile。
如果我们构建一个新的DLL或Exe,zip文件的内容可能会改变。但是zipfile的名称是相同的。
答案 0 :(得分:0)
如果您想在不下载zip文件的情况下知道zip文件是否已更改,那么您的服务器必须提供其他方式来发现服务器上的DLL和EXE的版本。这可能就像在服务器上保留文本文件一样简单。下载该文件而不是整个zip文件。如果该文本文件中的版本比本地版本更新,则下载zip文件。
您还可以在第一次处理完zip文件后删除它来避免处理。您可以将文本文件版本与磁盘上实际文件的版本进行比较,而不是将文本文件中的版本与本地zip文件中的文件版本进行比较。
答案 1 :(得分:0)
你可以做一个HTTP HEAD;并检查服务器上的文件最后修改日期和本地(如果已更改)下载新文件。
uses
......, IdHTTP;
function getHTTPLastModified(url: string): TDateTime;
var
HTTP: TIdHTTP;
begin
try
try
HTTP := TIdHTTP.Create(nil);
HTTP.Head( url );
result:=HTTP.Response.LastModified;
except
on E: Exception do
//ShowMessage('ProcessHttpRequest failed.');
result := 0;
end;
finally
try
HTTP.Disconnect;
except
end;
end;
end;