我做了一個Delphi應用程序,它定期下載一個zip文件(update.zip)。在zip文件中有DLL和Exe。 解壓zip文件,並將DLL和Exes複製到正確的文件夾。如何檢查是否已經下載zipfile
我想知道的是如何知道客戶端是否已下載zip文件,因此無需再次下載。因爲它已經被客戶端處理了。但是,當zipfile的內容已更改,然後 它必須再次下載zip文件。
如果我們建立一個新的DLL或Exe,zipfiles的內容可以改變。但是zipfile的名字是相同的。
我做了一個Delphi應用程序,它定期下載一個zip文件(update.zip)。在zip文件中有DLL和Exe。 解壓zip文件,並將DLL和Exes複製到正確的文件夾。如何檢查是否已經下載zipfile
我想知道的是如何知道客戶端是否已下載zip文件,因此無需再次下載。因爲它已經被客戶端處理了。但是,當zipfile的內容已更改,然後 它必須再次下載zip文件。
如果我們建立一個新的DLL或Exe,zipfiles的內容可以改變。但是zipfile的名字是相同的。
如果您想知道在不下載zip文件的情況下是否更改了zip文件,那麼您的服務器將不得不提供一些其他方式來發現服務器上的DLL和EXE版本。這可能與在服務器上保留文本文件一樣簡單。下載該文件而不是整個zip文件。如果該文本文件中的版本比本地版本更新,請下載zip文件。
您也可以避免在第一次處理zip文件後刪除它。您可以將文本文件版本與磁盤上實際文件的版本進行比較,而不是將文本文件中的版本與本地壓縮文件中的文件版本進行比較。
好的。感謝Rob。 – user3552264
你可以做一個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;
嗨shobits1,你能給我一個示例代碼如何做到這一點 – user3552264
這非常依賴於服務器。許多Web服務器不提供此功能。最重要的是,讀取文件的最後修改日期並不總是保證。這可以被覆蓋。 –
@user好像你希望我們爲你編寫程序 –
所以,你要知道,如果你的拉鍊filce包含一定的版本號 –
的EXE/DLL好,記住,如果你已經做了,再如果你沒有 –
不這樣做,並壓縮檔案庫你正在用嗎? –