office-gobmx/onlineupdate
Muhammet Kara 057307de12 Fix accidental variable shadowing
Was causing the if-check after the loop evaluating to false
always, thus never running inside the if-block. It was
probably never catched because the initial value of  the outer
variable applicationRunningError is always WAIT_TIMEOUT.

This was also causing error codes other than ERROR_SUCCESS
and WAIT_TIMEOUT never being returned from this method.

Change-Id: I068f96cd4d5afd63fe7017062e5ad6af171dcca0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88353
Tested-by: Jenkins
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
2020-02-10 01:03:22 +01:00
..
inc
qa
source Fix accidental variable shadowing 2020-02-10 01:03:22 +01:00
workben
astyle.options
CustomTarget_generated.mk
Executable_mar.mk Drop UNICODE/_UNICODE defines 2019-04-04 13:57:59 +02:00
Executable_mbsdiff.mk Drop UNICODE/_UNICODE defines 2019-04-04 13:57:59 +02:00
Executable_test_updater_dialog.mk drop gtk2 support 2019-09-30 16:53:32 +02:00
Executable_update_service.mk Drop UNICODE/_UNICODE defines 2019-04-04 13:57:59 +02:00
Executable_updater.mk drop gtk2 support 2019-09-30 16:53:32 +02:00
Makefile
Module_onlineupdate.mk
README
StaticLibrary_libmar.mk Drop UNICODE/_UNICODE defines 2019-04-04 13:57:59 +02:00
StaticLibrary_libmarverify.mk Drop UNICODE/_UNICODE defines 2019-04-04 13:57:59 +02:00
StaticLibrary_updatehelper.mk Drop UNICODE/_UNICODE defines 2019-04-04 13:57:59 +02:00
WinResTarget_updater.mk

Online update implementation based on Mozilla's MAR format + update mechanism

Parts of this code are copied from the mozilla repository, and adapted to
LibreOffice needs:

firefox/modules/libmar -> onlineupdate/source/libmar
firefox/toolkit/mozapps/update -> onlineupdate/source/update

The source/service directory contains the code for the silent windows updater that avoids the repeated administrator check for an update.

== NOTE ==
The updater executable should not depend on any other dynamic library in the LibreOffice installation as we would need to copy that one also to a temporary directory during update. We can't update any library or executable that is currently in use. For the updater executable we solve this problem by copying the updater before using it to a temporary directory.

On Windows we use the system to provide us with a crypto library whereas on Linux we use NSS.

== Update procedure ==

The updater executable is run two times. In a first run, the current installation is copied to a "update" directory and the update is applied in this "update" directory. During the next run, a replacement request is executed. The replacement request removes the old installation directory and replaces it with the content of the "update" directory.

=== User profile in the installation directory ===

The archive based installations have the user profile by default inside of the installation directory. During the update process this causes some problems that need special handling in the updater.

* The "update" directory is inside of the user profile resulting in recursive copying.
* During the replacement request the updater log is in the user profile, which changes location from the actual location to a backup location.