1
votes

I'm trying to find the best way of updating my program using Inno Setup and Inno Download Plugin (IDP). My program is around 3.5gb in size so finding a way where the user doesn't have to download 3.5gb everytime I release a 100mb update is really important.

Currently I have IDP downloading all the files for my program from my FTP using the code below:

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

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

    idpDownloadAfter(wpReady);
end;

What is the best way to deliver updates to users so that they only have to download the updated files and not all 3.5gb?

1

1 Answers

2
votes

The Inno Download Plugin has no API to retrieve a timestamp of a file on the server.

So you have to solve it another way.

The easiest to implement in Inno Setup, would be to a have an online service (say a simple PHP script) that the installer will call with version a number of the installed program and version number of the program being installed. The service will list the files that need an update and the installer will act accordingly. Or you can have the installer send timestamps of all installed files, and the service to check the files one by one, listing those that need an update.

If you cannot build such online service, another option is have a static plain text file with list of files and their timestamp. Upload the files to the FTP server. The file will need to be updated everytime you update the files on the server. The installer will download the file, parse it and decide itself what files need update.