2015-10-15 85 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好像你希望我們爲你編寫程序 –