2016-04-11 154 views
0

我試圖找到使用Inno Setup和Inno下載插件(IDP)更新我的程序的最佳方式。我的程序大小在3.5GB左右,所以每次發佈100MB更新時,用戶不必下載3.5GB就非常重要。Inno下載插件 - 只下載更新文件

目前我有IDP使用下面的代碼下載的所有文件我的程序從我的FTP:

procedure InitializeWizard(); 
begin 
    idpSetLogin('%%username%%', '%%password%%'); 
    {Add all files in URL, including subdirectories} 

    idpAddFtpDir('%%myftp%%','', ExpandConstant('{tmp}'), true); 

    idpDownloadAfter(wpReady); 
end; 

什麼是交付更新給用戶,以便他們只需要下載更新文件的最好方法而不是全部3.5GB?

+0

你怎麼知道哪些文件是新的?你是否保存了以前的文件的副本? –

+0

我不確定最好的方法,但我最初的想法是根據他們上傳到服務器的日期來識別所有新文件。例如如果文件的修改日期在當前安裝文件修改日期後被修改,則下載並替換。但是,如果這不是一個好方法,請告訴我。 更新後的文件需要替換用戶機器上的舊文件。 – callum

+0

那麼下載的文件是不是安裝程序或(ZIP)檔案?他們是您複製到用戶機器的實際文件? –

回答

1

Inno Download Plugin沒有API來檢索服務器上文件的時間戳。

所以你必須以另一種方式解決它。

在Inno Setup中最容易實現的方法是使用一個在線服務(比如說一個簡單的PHP腳本),安裝程序將使用版本號調用正在安裝的程序和版本號。該服務將列出需要更新的文件,安裝程序將相應地執行操作。或者,您可以讓安裝程序發送所有已安裝文件的時間戳,並使用該服務逐個檢查文件,列出需要更新的文件。

如果你不能建立這樣的在線服務,另一種選擇是有一個靜態的純文本文件,其中包含文件列表和它們的時間戳。將文件上傳到FTP服務器。每次更新服務器上的文件時,都需要更新該文件。安裝程序將下載文件,解析並自行決定哪些文件需要更新。

+1

感謝您的幫助。看起來我需要對PHP腳本進行更多的研究,以便列出所有需要根據用戶當前版本進行更新的文件。 – callum

+0

@Martin:你認爲[TimeStamps](https://winscp.net/eng/docs/timestamp)在FTP上足夠可靠嗎? –

+0

@LaurieStearn對不起,我不明白你的問題。我的答案不建議使用FTP時間戳。 –