LazAutoUpdater
From Lazarus 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....)
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...