Jump to: navigation, search


< Scout‎ | Concepts
Revision as of 07:17, 26 November 2013 by Asc.bsiag.com (Talk | contribs)

F2 Updater

F2 is a simple update manager for Eclipse or Java based applications. The F2 update manager has been designed to minimize the network load for consecutive application updates and updates are executed with transactional safety.

F2 has no dependencies to eclipse scout or any other library. However the installation of f2 is supported by the technology checkbox in Scout SDK (since 3.10).

If you are new to f2, check out the tutorial first.

Where do I find F2

F2 is available on the eclipse marketplace.

It can also be installed with the Scout SDK (since 3.10)

Design Goals

  • Minimal network load for live updates.
  • Move CPU/memory load to "Create" of the updatesite and away from the client "Update"
  • Transactional safety for updates, e.g. commit or rollback
  • No lenience: The update is either done with byte by byte equality or not
  • Support for Windows 7 UAC security
  • Support for multiple platforms such as win32, macosx, etc.
  • Complete automation of updatesite creation and update handling
  • Very easy zip file handling and command line processing

Parameter Overview

command line config.ini Description Default
-url f2.url URL of the updatesite; if you can download f2.txt from http://example.local:8080/yourwebapp/updatesite/f2/win32/f2.txt, then the correct URL is http://example.local:8080/yourwebapp/updatesite/f2?
-name f2.name Name of the updatesite; this should match the name of your client (zip file!)
-http.user f2.http.user Username for HTTP Basic Authentication
-http.pass f2.http.pass Password for HTTP Basic Authentication
-uac f2.uac Option for Windows 7 UAC (user access control); you should only use this if users have local administrator permissions; if so, users will be asked whether they want to install the update; usually it's easier to ensure that users have write permissions for the installation directory; if so, users can always install updates true if the client zip contains the f2 plug-in, false otherwise
-checkhash f2.checkhash Option to enable/disable content hash check on delta updates; disabling this check may make the update process a bit faster false
-checksize f2.checksize Option to enable/disable file size check additionally to crc false
-version f2.version Only update up to a limited version (e.g. -version example_1.2.0)
-temp f2.temp Option to use specific temp directory
-verbose for detailed logging
-silent for sparse logging
-versionsToKeep f2.versionsToKeep Keep only a specific number of application versions when creating the updatesite All


How do I build an updates site?

You should keep all the various client zip files in your updatesite and rebuild the f2.txt file from the command line as described in the tutorial .

How do I enable/disable Windows 7 UAC?

UAC is automatically enabled if the platform is win32 and the client zip contains the f2 plug-in jar. Not that uac mode is only possible when the client zip contains the f2 plug-in jar.

From java code: If the call is


change it to

HashMap<F2Parameter, String> optionMap=new HashMap<F2Parameter, String>();
optionMap.put(F2Parameter.WindowsUAC ,false);//or true
F2Updater.update(null/*default strategy*/, options, null/*default user agent*/)

From command line: add the -uac true or -uac false option

How do I disable verbose mode on command line?

Use -verbose or -silent

How do I disable that the client checks the zip hashon updates?

The zip hash check on the client may tike some long time depending on client hardware. If the crc check of the delta/full zip is sufficient for your client (customer) you might disable the additional content hash check. The probability that the zip is corrupt after a delta update is relatively small. However disabling the content hash check (at least theoretically) eliminates the transactional acid condition.

In java:

HashMap<F2Parameter, String> optionMap=new HashMap<F2Parameter, String>();
optionMap.put(F2Parameter.WindowsUAC ,false);
F2Updater.update(null/*default strategy*/, options, null/*default user agent*/)

How do I use my own progress monitor when updating?

UpdateResult result=F2Updater.update(null,null,null,monitor);

How do I prevent my CI server from running out of space?

Use the parameter -versionsToKeep to limit the number of version to keep on the build server (i.e. CI deployment).

See also