2015-10-15 32 views
-1

我做了一个Delphi应用程序,它定期下载一个zip文件(update.zip)。在zip文件中有DLL和Exe。 解压zip文件,并将DLL和Exes复制到正确的文件夹。如何检查是否已经下载zipfile

我想知道的是如何知道客户端是否已下载zip文件,因此无需再次下载。因为它已经被客户端处理了。但是,当zipfile的内容已更改,然后 它必须再次下载zip文件。

如果我们建立一个新的DLL或Exe,zipfiles的内容可以改变。但是zipfile的名字是相同的。

+0

所以,你要知道,如果你的拉链filce包含一定的版本号 –

+0

的EXE/DLL好,记住,如果你已经做了,再如果你没有 –

+0

不这样做,并压缩档案库你正在用吗? –

回答

0

如果您想知道在不下载zip文件的情况下是否更改了zip文件,那么您的服务器将不得不提供一些其他方式来发现服务器上的DLL和EXE版本。这可能与在服务器上保留文本文件一样简单。下载该文件而不是整个zip文件。如果该文本文件中的版本比本地版本更新,请下载zip文件。

您也可以避免在第一次处理zip文件后删除它。您可以将文本文件版本与磁盘上实际文件的版本进行比较,而不是将文本文件中的版本与本地压缩文件中的文件版本进行比较。

+0

好的。感谢Rob。 – user3552264

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; 
+0

嗨shobits1,你能给我一个示例代码如何做到这一点 – user3552264

+1

这非常依赖于服务器。许多Web服务器不提供此功能。最重要的是,读取文件的最后修改日期并不总是保证。这可以被覆盖。 –

+0

@user好像你希望我们为你编写程序 –