LazAutoUpdater

From Free Pascal wiki
Revision as of 17:39, 30 July 2014 by Minesadorada (talk | contribs) (Updating a running Lazarus Application (Laz AutoUpdate) Started the page. Work in progress....)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Lazarus Auto-Updater

SourceForge Project

Workflow

The Laz AutoUpdater workflow for updating a running application is as follows:

  • App downloads a small 'version.xml' file from sourceforge with version info (it can do this at start-up)
  • App compares with its own internal version
  • If new version available, App downloads it from Sourceforge into an /updates folder
  • App uses TProcess to start the console updater, passing it info in the command line
  • updater copies a downloaded 'whatsnew.txt' into the App folder and enters Sleep for a few seconds
  • Meanwhile App has entered loop checking whether a 'whatsnew.txt' file has been copied into it's directory
  • App detects 'whatsnew.txt' and Closes. (in other words the TProcess has started successfully)
  • Updater copies /updates/UpdatedApp to App directory.
  • Updater uses TProcess to start the updated app
  • On Form.Show, App displays 'whatsnew.txt' then deletes it

Version.xml

The format is as follows: <?xml version="1.0" encoding="utf-8"?>

<APPCONFIG>
  <ProgramInfo>
    <Version GUI="0.0.2" OtherModule="0.1.0"/>
  </ProgramInfo>
</APPCONFIG>

And the code to create it:

uses XMLConf
Var XMLConfig1:TXMLConfig; 
begin
 XMLConfig1.Clear;
 XMLConfig1.RootName := 'APPCONFIG';
 XMLConfig1.Filename := 'version.xml';
 XMLConfig1.OpenKey('ProgramInfo/Version');
 XMLConfig1.SetValue('GUI', '0.0.2');
 XMLConfig1.SetValue('OtherModule', '0.1.0');
 XMLConfig1.CloseKey;
 XMLConfig1.Flush;
end;

Location of files

  • In your SourceForge Files section, make a folder called 'updates'
  • Upload 'version.xml' into it
  • Upload the zip file containing your updated EXE and the file 'whatsnew.txt'
  • The application installer (Inno Setup?) goes into your Files section as normal
    • The Users should only have to download the installer once. All the subsequent versions will go into the /updates folder as above




Work-In-Progress...

Minesadorada